【问题标题】:ld: library not found for -lrtld: 找不到 -lrt 的库
【发布时间】:2018-05-22 01:02:07
【问题描述】:

我正在尝试运行一个为 Ubuntu 制作并适用于 Mac OS 的项目。当我在做 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

我在整个项目中看不到任何具有该名称的库。

谁能解释它是什么以及如何解决它?

【问题讨论】:

    标签: c++ macos makefile apache-kafka


    【解决方案1】:

    在旧的 Linux 系统上,一些函数(例如 clock_gettime)被记录为需要 -lrt 用于 版本的 GNU libc。 最近 glibc(2013 年 2.17 之后)不再是这种情况。

    因此,您可以从 Makefile 中删除 -lrt(并从生成它的 cmake 配置事物中删除该事物)。

    顺便说一句,删除-lrt 也应该适合最近的 Linux 发行版。

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

    【讨论】:

    • 遗憾的是,这些“旧”的 Linux 系统仍然是一些最常用和最商业相关的系统,即 RHEL 7 和 CentOS 7。所以,目前,我们不能只从我们的构建系统中清除 -lrt
    • 如果您从 RedHat 购买支持,您需要询问他们。
    • 我不是,但我支持那些是。至于“询问”他们,答案是除了针对 glibc 2.17 进行编译(或发布替代 glibc,带来所有痛苦)之外,没有其他解决方案。 RHEL 7 和 CentOS 7 附带 2.17,直到生命周期结束。
    猜你喜欢
    • 1970-01-01
    • 2014-12-13
    • 2010-12-03
    • 2021-10-24
    • 2017-03-31
    • 1970-01-01
    • 2011-09-26
    • 2018-03-10
    相关资源
    最近更新 更多