Общий объект не найден, но присутствует в каталоге компоновщика

Я скачал и собрал 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,

Другие вопросы по тегам