【问题标题】:Linking boost::thread链接 boost::thread
【发布时间】:2012-03-23 06:40:57
【问题描述】:

我正在尝试使用 boost 库学习一些东西,但是当我尝试编译包含 boost::threads 的东西时遇到了问题。 我在链接过程中遇到错误,这是消息:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost-thread

但这很奇怪,因为只有当我使用普通用户编译时才会发生这种情况,使用 root 我可以毫无问题地编译。

提前致谢。

【问题讨论】:

  • 你运行的命令是什么?通常你必须在其中的某个地方提供-L[/path/to/boost],以便它知道在哪里可以找到它。
  • 最新版本的 boost 需要使用“-lboost_thread”
  • 这是我运行的命令:g++ -L/usr/local/boost_1_48_0/stage/lib -lboost-thread threadBoost.cpp,但它只能从 root 工作

标签: c++ boost linker boost-thread


【解决方案1】:

包括

#include <boost/thread/thread.hpp>

其他链接器标志

-lboost_system -lboost_thread-mt

【讨论】:

    【解决方案2】:

    检查boost安装路径中的lib名称(默认:/usr/lib/),如果是libboost_thread.so,添加-lboost_thread。不要忘记使用 -L/usr/lib/boost 指定 boost 目录的路径。 如果它仅作为 root 工作,请检查您在此目录中的权限:

    ls -la /usr/lib/ | grep boost
    

    您应该会看到您的登录信息和 rw_r_r_(检查您是否有读取权限)。

    如果您对目录和 boost lib 有此权限,则可以使用 gcc 链接:

    g++ obj.o obj2.o -L/usr/lib -lboost_thread
    

    如果您不拥有文件或没有读取权限,请以 root 身份登录并添加它们

    chown -R /usr/lib <your login>
    chmod +r /usr/lib/lib*.so
    

    【讨论】:

    • 我已经检查了权限但是有 0k(777),我用这个编译:g++ -L/usr/local/boost_1_48_0/stage/lib -lboost-thread threadBoost.cpp 但我仍然获取:找不到-lboost-thread
    【解决方案3】:

    将 /path/to/boost 添加到您的 makefile 库包含路径,您的错误就会消失。

    另一个选项是将它包含在您的 LIBPATH 变量中

    【讨论】:

      猜你喜欢
      • 2015-02-07
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2017-02-20
      • 2013-01-17
      • 2020-12-21
      • 1970-01-01
      • 2012-09-17
      相关资源
      最近更新 更多