Общий объект не найден, но присутствует в каталоге компоновщика
Я скачал и собрал boost_1_68_0 из источника и получил следующее сообщение:
Библиотеки Boost C++ успешно созданы! Следующий каталог должен быть добавлен в пути включения компилятора:
/resources/boost_1_68_0
Следующий путь должен быть добавлен к путям библиотеки компоновщика:
/resources/boost_1_68_0/stage/lib
Код хорошо компилируется с этим:
g++-4.9 -std=c++11 -I /resources/boost_1_68_0 -L /resources/boost_1_68_0/stage/lib regex.cpp -lboost_regex -o reg
Когда я пытаюсь запустить код, я получаю это:
./reg: ошибка при загрузке общих библиотек: libboost_regex.so.1.68.0: не удается открыть файл общего объекта: нет такого файла или каталога
Однако внутри /resources/boost_1_68_0/stage/lib у меня есть следующие файлы:
libboost_regex.so.1.68.0
libboost_regex.so -> libboost_regex.so.1.68.0
Есть ли способ заставить его искать общий объект в директории /resources/boost_1_68_0/stage/lib?
Спасибо!
Использование CentOS 7
2 ответа
Вы должны положить /resources/boost_1_68_0/stage/lib
в LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=/resources/boost_1_68_0/stage/lib:${LD_LIBRARY_PATH}
Предполагая, что у вас есть root-доступ на машине, попробуйте:
echo "/resources/boost_1_68_0/stage/lib" >> /etc/ld.so.conf.d/boost.conf
и перезапустить ldconfig
,