【问题标题】:Shared object not found but is present in the linker directory未找到共享对象但存在于链接器目录中
【发布时间】:2019-05-01 19:29:51
【问题描述】:

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

【问题讨论】:

  • 您使用的是哪个发行版?
  • @tink 这是 CentOS7

标签: c++ linux boost


【解决方案1】:

假设您在机器上具有 root 访问权限,请尝试:

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

然后重新运行ldconfig

【讨论】:

    【解决方案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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多