2012-03-05 83 views
3

我试图学习与boost库的东西,但当我尝试编译包含boost :: threads的东西时遇到问题。 我链接过程中得到一个错误,这就是消息:链接boost ::线程

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

但它的奇怪,因为这种情况,只有当我与一个普通用户编写,使用根我也没有问题编译。

在此先感谢。

+1

你跑的命令是什么?通常你必须在那里提供'-L [/ path/to/boost]',所以它知道在哪里找到它。 – 2012-03-05 20:57:26

+0

最近版本的boost需要使用“-lboost_thread” – dsign 2012-03-05 21:19:28

+0

这是我运行的命令: g ++ -L/usr/local/boost_1_48_0/stage/lib -lboost-thread threadBoost.cpp,但它只能用于根目录 – alkz 2012-03-05 23:12:32

回答

1

检查的lib名提升安装路径(默认是:/ usr/lib中/),如果是libboost_thread.so,加-lboost_thread。不要忘记用-L/usr/lib/boost指定升级目录的路径。 如果只是上班根,请检查您的权限在此目录中:

ls -la /usr/lib/ | grep boost 

你应该看到您的登录,并rw_r_ [R _(检查是否具有读取权限)。

如果您对目录和升压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 
+1

我已经检查的权限,但也有0K(777),我编译如下: G ++ -L在/ usr /本地/ boost_1_48_0 /台/ lib目录-lboost线程threadBoost.cpp 但我仍然得到: 找不到 - LBOOST线程 – alkz 2012-03-06 12:28:20

0

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

另一种选择是包括提升到您的LIBPATH变量

5

包括

#include <boost/thread/thread.hpp> 

其它链接器标记

-lboost_system -lboost_thread-mt