C静态库无法与librt链接

中期

我要创建一个静态库(它不是创建一个动态选择一个选项),和我在这个静态库,它使用的函数timer_createtime.h例如是这样的:

somelib.h:

#include <time.h>

int do_something(void);

somelib.c:

int do_something(void){
        timer_t timer;
        struct sigevent sevp;
        sevp.sigev_notify = SIGEV_SIGNAL;
        sevp.sigev_signo = SIGRTMIN;
        sevp.sigev_value.sival_ptr = NULL;
        int ret = timer_create(CLOCK_MONOTONIC, &sevp, &timer);
        timer_delete(timer);
        return 0;
}

该代码实际上是毫无意义的,仅此而已就需要链接到librt以说明我的问题,如下所示:

在我编译somelib.c之后:

gcc -c -o somelib.o somelib.c -lrt

并制作静态库:

ar rcs somelib.a somelib.o

链接时出现以下错误:

gcc -o someexec someexec.c -lrt ./somelib.a

返回:

somelib.c:(.text+0x30): undefined reference to `timer_create'
somelib.c:(.text+0x44): undefined reference to `timer_destroy'

这是我的问题的最小示例。我不确定这是否可以全部解决,因为我的理解是,静态库在创建时必须知道librt的位置,并且由于它是动态的,因此如果不链接静态库就不可能版本的librt。仍然我不经常使用静态库,所以我想知道是否有一种方法可以做这样的事情。

编译器版本:gcc 4.8.1没有设置其他标志。

n

gcc -c -o somelib.o somelib.c -lrt

那只是编译,-lrt与这里无关。

gcc -o someexec someexec.c -lrt ./somelib.a

对象/库的分配顺序很重要。

尝试将其推-lrt到最后,然后它应该起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从Makefile链接静态库

来自分类Dev

与 C 中的静态库链接

来自分类Dev

将C ++库与Haskell库静态链接

来自分类Dev

项目无法与libcurl静态库链接

来自分类Dev

静态库链接,C ++,VS Express 2013

来自分类Dev

与CMake链接的C ++动态和静态库

来自分类Dev

静态库链接,C ++,VS Express 2013

来自分类Dev

创建并链接静态锈库并链接到c

来自分类Dev

QtCreator-无法链接到静态库(ld错误)

来自分类Dev

当链接为* .a静态库时,为什么无法解析“ WinMain”?

来自分类Dev

无法在Linux上使用Mingw链接到静态库

来自分类Dev

无法在Linux上使用Mingw链接到静态库

来自分类Dev

无法在 Mac OS X 上链接静态库

来自分类Dev

从静态库动态链接?

来自分类Dev

级联静态库链接?

来自分类Dev

链接静态库并解析

来自分类Dev

链接静态库的问题

来自分类Dev

链接静态库

来自分类Dev

GCC链接静态库

来自分类Dev

Linux:C / C ++标准库静态与动态链接

来自分类Dev

将C编译的静态库链接到C ++程序

来自分类Dev

使用gcc在C中链接C ++静态库

来自分类Dev

如何将C ++静态库链接到C程序?

来自分类Dev

使用gcc在C中链接C ++静态库

来自分类Dev

创建要与C ++程序链接的静态CUDA库

来自分类Dev

是否可以将macfuse链接到C ++静态库?

来自分类Dev

在C ++中链接静态库时对...的未定义引用

来自分类Dev

如何为C扩展链接python的静态库?

来自分类Dev

链接器如何处理链接到共享库的C ++静态库的唯一typeinfo约束?