我正在尝试使用gcc 4.8.2在Solaris 11.3上构建boost 1.69。 然后构建完成,我看到了(带有ldd libname.so)使用动态节标记NEEDED中的相对路径的链接器 bin.v2 / libs / atomic / build / gcc-4.8.2 / release / threading-multi / visibility-hidden / libboost_atomic.so.1.69.0 不好我想链接器仅使用libname而不使用任何路径(绝对或相对)。 如何设置短名称链接?
因此:solaris的ldd输出和RHEL 6的ldd输出
Solaris
ldd libboost_thread.so.1.69.0
**bin.v2/libs/system/build/gcc-4.8.2/release/threading-multi/visibility-hidden/libboost_system.so.1.69.0** => bin.v2/libs/system/build/gcc-4.8.2/release/threading-multi/visibility-hidden/libboost_system.so.1.69.0
.........
Linux
ldd libboost_thread.so.1.69.0
linux-gate.so.1 => (0x00ba6000)
**libboost_system.so.1.69.0** => /usr/lib/libboost_system.so.1.69.0 (0x00a53000)
........
为什么在Solaris上通过在依赖项名称中使用crasy路径来促进构建,但是在Linux上-这是正常的-只有libname而没有任何路径。我如何对b2或其他工具说仅使用短依赖项名称?
答案 0 :(得分:0)
Solaris链接器只是在记录所告诉的内容-似乎是将通过bin.v2/libs/system/build/gcc-4.8.2/release/threading-multi/visibility-hidden/libboost_system.so.1.69.0
传递的软件链接到链接器而不是普通-Lbin.v2/libs/system/build/gcc-4.8.2/release/threading-multi/visibility-hidden/ -lboost_system
的命令。您必须查看构建脚本/ Makefile,以确定为什么这样做。