ld: 找不到-lrt库

10

我正在尝试在Mac OS上运行一个适用于Ubuntu的项目,但在进行“make”时出现以下错误:

ld: library not found for -lrt
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [consumer] Error 1
make[1]: *** [CMakeFiles/consumer.dir/all] Error 2
make: *** [all] Error 2

我在该项目中找不到任何名字为thole的库。

有人能解释一下这是什么,并且如何解决吗?

1个回答

15

在旧的Linux系统上,一些函数(例如clock_gettime)的文档要求使用-lrt来针对GNU libc的旧版本。但这在近期的glibc(从2013年之后的2.17版本)不再需要。

因此,您可以从Makefile中删除-lrt(并从生成它的cmake配置中删除相关内容)。

顺便说一句,删除-lrt也适用于近期的Linux发行版。

PS:如果您为Linux系统付费支持,请向您的支持人员寻求建议。


很遗憾,这些“老旧”的Linux系统仍然是最常用和最商业相关的系统,即RHEL 7和CentOS 7。因此,暂时我们不能从构建系统中清除-lrt - Konrad Rudolph
如果您购买了RedHat的支持服务,您需要向他们咨询。 - Basile Starynkevitch
我不是,但我支持那些需要帮助的客户。至于“询问”他们,答案是除了针对glibc 2.17进行编译(或者使用替代的glibc,这会带来很多麻烦)之外,没有其他解决方案。RHEL 7和CentOS 7设计上会一直使用2.17版本直到生命周期结束。 - Konrad Rudolph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接