Я использую CMake для создания двух общих библиотек (файлы .so
). Они встраиваются в отдельные каталоги, но на этапе установки копируются в тот же каталог. Один из них связан с другим. И оба загружаются динамически из другого процесса.
Первая проблема заключается в том, что, по-видимому, CMake не устанавливает rpath для файлов .so
в OS X (не тестировалось на других платформах). В CMakeLists.txt
у меня есть
set(CMAKE_INSTALL_PREFIX ../dist)
set(MACOSX_RPATH YES)
set(INSTALL_NAME_DIR YES)
И файлы CMakeLists.txt
для двух библиотек включаются с помощью
add_subdirectory(./a "${CMAKE_BINARY_DIR}/a")
add_subdirectory(./b "${CMAKE_BINARY_DIR}/b")
Но запуск otool -l
в результирующих .so
файлах не показывает записи LC_RPATH
.
Кроме того, какой путь необходимо указать в RPath (из a
), чтобы, когда компоновщик загружает a.so
, он мог найти b.so
, который находится в том же каталоге (dist/
). Исполняемый файл, из которого загружается a
, находится в другом месте.
Я пробовал @executable_path/
, @executable_path/../
, @origin/../
, но ни один из них не работает.