我在库代码中使用标题<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”来自动查找应该提供此文件的软件包。