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

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

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


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

我尝试在创建共享库的gcc命令上使用/usr/lib/gcc/x86_64-redhat-linux/4.8.5选项指定路径-L,但仍然要求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

最佳答案

查看文件/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”来自动查找应该提供此文件的软件包。

10-08 04:11