Я пытаюсь скомпилировать и запустить программу C ++ на сервере, где у меня нет прав root.У меня проблемы с подключением библиотеки boost_iostreams
.
Я могу успешно скомпилировать свою программу, указав на каталог для установки буста, используя флаг -L
как: g++ -I path/to/boost/build/include -o out prog1.cpp prog2.cpp -L path/to/boost/build/lib -lboost_iostreams
Однако, если я запускаю программу как ./out
, я получаюошибка error while loading shared libraries: libboost_iostreams.so.1.67.0: cannot open shared object file: No such file or directory
, поскольку компоновщик не может найти libboost_iostreams.so.1.67.0
(который существует в path/to/boost/build/lib
)
Благодаря этому ответу я смог явно указать LD_LIBRARY_PATH
и запустите программу как
LD_LIBRARY_PATH="path/to/boost/build/lib" ./out
.
Поскольку я не являюсь пользователем root, я также не могу запустить ldconfig
.Мне было интересно, есть ли способ загрузки динамических библиотек без префикса LD_LIBRARY_PATH
при запуске программы и отсутствии корневого доступа.