Увеличение.Ссылочная зависимость с коротким именем - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь собрать boost 1.69 на Solaris 11.3 с gcc 4.8.2.Затем сборка завершена. Я вижу (с 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 без какого-либо пути (абсолютного или относительного).Как я могу установить ссылку на короткое имя?

Итак: выход ldd от соляриса и ldd от RHEL 6

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 boost сборка с использованием аварийного пути в имени зависимости, а в Linux - это нормально - только libname без какого-либо пути.Как я могу сказать b2 или другому инструменту использовать только короткое имя зависимости?

1 Ответ

0 голосов
/ 07 июня 2019

Линкер 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. Вам нужно будет заглянуть в сценарии сборки / Makefiles, чтобы определить, почему это происходит.

...