找不到共享对象,但存在于链接器目录中

时间:2018-11-29 16:57:40

标签: c++ linux boost

我已经从源代码下载并构建了 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 个答案:

答案 0 :(得分:1)

假设您具有计算机的root访问权限,请尝试:

echo "/resources/boost_1_68_0/stage/lib" >> /etc/ld.so.conf.d/boost.conf

并重新运行ldconfig

答案 1 :(得分:0)

您必须将/resources/boost_1_68_0/stage/lib放在LD_LIBRARY_PATH中:

export LD_LIBRARY_PATH=/resources/boost_1_68_0/stage/lib:${LD_LIBRARY_PATH}