Как можно изменить путь к библиотеке 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")