Связывание других библиотек в динамически загружаемые библиотеки
Я пишу библиотеку, которая динамически загружается другой программой. Эта библиотека использует некоторые библиотеки Boost (например, thread). Можно ли как-то заставить его работать без перекомпиляции рассматриваемой программы?
Если я использую ссылку флаги -lboost_thread
, это не работает, потому что программа, которая использует эту библиотеку, должна будет также связать ту же библиотеку Boost. С помощью /usr/lib/libboost_thread.a
также не работает, потому что .a
файл не скомпилирован с -fPIC
,
Я использую GCC под Linux.
1 ответ
Решение
Попытавшись еще раз, я обнаружил, что проблема не в том, что я описал. Библиотека не загружалась по какой-то другой причине. Я обнаружил, что связывание библиотеки с -lboost_thread
работает, при следующих условиях:
- GCC выдает предупреждения компилятора (возможно, потому что библиотеки из
-L
путь, которого нет в$LD_LIBRARY_PATH
). - При загрузке библиотеки, она загружает Boost автоматически при условии, что может их найти.