Подтвердить что ты не робот

Как изменить LD_LIBRARY_PATH в CMake?

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

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

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

4b9b3361

Ответ 1

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

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 handling

Ответ 2

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

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