【问题标题】:how to link against the libatomic library in gcc如何链接到 gcc 中的 libatomic 库
【发布时间】:2017-03-19 14:50:36
【问题描述】:

我在我的库代码中使用标题 <atomic> 并尝试将程序与 libatomic.so 链接。

每当我尝试链接所有目标文件并创建我的库的 SO 文件时,我都会收到错误

can not find /usr/lib64/libatomic.so.1.0.0

我在路径/usr/lib/gcc/x86_64-redhat-linux/4.8.5 下有这个so 文件。 作为 libatomic.so。名称中未指定版本。

我尝试在创建共享库的 gcc 命令上使用 -L 选项指定路径 /usr/lib/gcc/x86_64-redhat-linux/4.8.5,但它仍然要求 lib /usr/lib64/libatomic.so.1.0.0 链接原子代码。

那么我该如何对抗/usr/lib/gcc/x86_64-redhat-linux/4.8.5/libatomic.so 来创建库呢? 为什么当我没有在 gcc 命令的-latomic 命令行选项中指定任何版本时,它要求 libatomic.so.1.0.0。

我的gcc版本是4.8.5-4,操作系统是redhat 7.2

【问题讨论】:

    标签: gcc dll linker


    【解决方案1】:

    查看文件/usr/lib/gcc/x86_64-redhat-linux/4.8.5/libatomic.so的内容!您可能会看到它不是一个实际的库,而只是一行文本,如下所示:

    INPUT ( /usr/lib64/libatomic.so.1.0.0 )
    

    因此,当您使用“-latomic”时,会拾取该文件(如您所愿!),然后链接器继续查找 /usr/lib64/libatomic.so.1.0.0 - 这是缺失的。要拥有它,您可能应该安装“libatomic”包 (yum install libatomic)。你也可以使用“yum whatprovides /usr/lib64/libatomic.so.1.0.0”来自动找到应该提供这个文件的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多