У меня есть моя динамическая библиотека, построенная успешно с зависимостями от ускоряющих библиотек, которые были созданы и установлены с помощью пользовательского префикса (./b2 install --prefix=PREFIX
). Однако, когда я запускаю otool -L
в своей библиотеке, я получаю вывод следующим образом:
...
libboost_regex.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
...
Что, в отличие от других зависимостей, представлено без полного пути к этим ускорительным библиотекам. Это приводит к ошибкам во время выполнения, когда моя библиотека загружается приложениями.
Я знаю, что для исправления этой проблемы можно использовать install_name_tool
. Тем не менее, я пытаюсь понять, почему это происходит только для boost-библиотек и не происходит с другими зависимостями, от которых зависит моя библиотека?
ИЗМЕНИТЬ
Меня попросили привести пример команды сборки, но, как обычно, пример "реальной жизни" немного сложнее.
В моем случае есть библиотека libA.dylib
, которая зависит от повышения. Тогда есть моя библиотека libMy.dylib
, которая зависит от libA.dylib
и повышает. Проблема возникает во время шага configure
, когда выполняется проверка существования простой библиотеки (обычная тестовая программа, аналогичная AC_CHECK_LIB
). Эта проверка пытается создать небольшую тестовую программу, которая связана с libA.dylib
, чтобы доказать доступность libA.dylib
, и она терпит неудачу - из-за ошибки неспособности найти более мощные библиотеки. Конечно, они не найдут их, потому что otool -L libA.dylib
дает мне boost libs без полного пути.