促进。具有短名称的链接依赖项

时间:2019-04-17 14:00:23

标签: gcc boost solaris ldd

我正在尝试使用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或其他工具说仅使用短依赖项名称?

1 个答案:

答案 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,以确定为什么这样做。