链接boost :: thread

alk*_*lkz 4 c++ linker boost boost-thread

我正在尝试用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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

neo*_*eye 7

包括

#include <boost/thread/thread.hpp>
Run Code Online (Sandbox Code Playgroud)

其他链接器标志

-lboost_system -lboost_thread-mt
Run Code Online (Sandbox Code Playgroud)


小智 1

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

ls -la /usr/lib/ | grep boost
Run Code Online (Sandbox Code Playgroud)

您应该看到您的登录名和 rw_r_ r _ (检查您是否具有读取权限)。

如果您对目录和 boost 库具有此权限,则可以完成与 gcc 的链接:

g++ obj.o obj2.o -L/usr/lib -lboost_thread
Run Code Online (Sandbox Code Playgroud)

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

chown -R /usr/lib <your login>
chmod +r /usr/lib/lib*.so
Run Code Online (Sandbox Code Playgroud)