Как можно изменить путь к библиотеке LD в CMake?

У меня есть локальная общая библиотека, которая не находится в $LD_LIBRARY_PATH. Я хочу запустить свой исполняемый файл, но поскольку он не может найти общую библиотеку в системных папках, он выводит "ошибка при загрузке общих библиотек".

возможным исправлением для этого является экспорт нового LD_LIBRARY_PATH, содержащего папку локальной библиотеки.

Как я могу автоматически экспортировать эту переменную среды в CMake?

2 ответов


Если ваш общий lib не построен в том же проекте CMake вашего исполняемого файла, вы можете использовать обработку CMake rpath следующим образом:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

когда вы будете работать make install, CMake автоматически установит путь выполнения исполняемого файла к вашей общей библиотеке.

Если ваша общая библиотека построена в том же проекте CMake, используйте это:

set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

в этом случае вы должны добавить себе каталог, где ваша общая библиотека будет установлена в путь выполнения.

для получения дополнительной информации вы можете прочитать обработка CMake rpath


вы можете установить путь поиска общей библиотеки времени выполнения с помощью -rpath линкер вариант:

SET(CMAKE_EXE_LINKER_FLAGS 
          "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")