我在我的库代码中使用标题<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,OS是redhat 7.2
答案 0 :(得分:0)
查看文件/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”来自动查找应该提供此文件的软件包。