Я вижу два возможных подхода к решению вашей проблемы.
- в первом решении используется
LIBRARY_PATH
, который отличается от LD_LIBRARY_PATH
, как описано ниже.
второе решение использует модифицированный мезон-файл для прямой передачи параметров компоновщику. Необязательно, он также использует rpath
, что избавляет от необходимости изменять LD_LIBRARY_PATH
впоследствии.
- First solution
При создании проекта компоновщик использует LIBRARY_PATH
(а не LD_LIBRARY_PATH
)
LIBRARY_PATH
используется gcc перед компиляцией для поиска в каталогах, содержащих статические и совместно используемые библиотеки, которые необходимо связать с вашей программой.
LD_LIBRARY_PATH
используется вашей программой для поиска в каталогах, содержащих общие библиотеки, после того, как она была успешно скомпилирована и связана.
дополнительные сведения: LD_LIBRARY_PATH против LIBRARY_PATH
Может ты можешь попробовать
export LIBRARY_PATH=/opt/conda/:$LIBRARY_PATH
перед запуском meson для сборки вашего проекта.
- Второе решение
Измените свой мезон-файл и используйте rpath
(необязательно)
Альтернативой первому предыдущему решению является прямое изменение файла Meson для передачи некоторых параметров компоновщику.
Вот кое-что, что я использовал в прошлом, и вы можете легко приспособиться к вашей проблеме:
#
# blaspp
#
blaspp_lib = 'blaspp'
blaspp_lib_dir = '/opt/slate/lib'
blaspp_header_dir = '/opt/slate/include'
blaspp_dep = declare_dependency(
link_args : ['-L' + blaspp_lib_dir, '-l' + blaspp_lib],
include_directories : include_directories(blaspp_header_dir))
executable('test_blaspp',
'test_blaspp.cpp',
build_rpath : blaspp_lib_dir,
install_rpath : blaspp_lib_dir,
dependencies : [blaspp_dep])
declare_dependency (...) определяет параметры для передачи компоновщику (это заменяет необходимость определять LIBRARY_PATH
в первом решении)
исполняемый файл (...) определяет rpath
. Это необязательный шаг, который встраивает дополнительную информацию о пути к библиотеке непосредственно в исполняемый файл. Если вы используете это, вам не нужно будет изменять LD_LIBRARY_PATH
при запуске вашего исполняемого файла.
Дополнительные сведения: https://amir.rachum.com/blog/2016/09/17/shared-libraries/ (см. раздел «rpath и runpath») и см. википедию: https://en.wikipedia.org/wiki/Rpath
person
Picaud Vincent
schedule
07.04.2020