0

我必须在包含旧版本 C++ boost 库的机器上进行演示。具体来说boost::thread,我需要在其中使用类的lock成员函数mutex。不幸的是,旧版本(1.33.1)不包含此方法。

我在目标机器上没有root权限,也无法卸载之前版本的boost。我的解决方案是在目标机器上预编译更新的库,然后链接到更新版本的库。

库编译部分非常顺利,一切顺利,但当我尝试编译时,它仍然表明它使用的是旧版本的 boost。我环顾四周(这里是 g++ noob),发现您可以手动指定一个位置,首先使用-Land-I标志来查找头文件和库。我尝试将这些与相对路径一起使用(因为我不知道将执行演示的目录,但我确实知道我的新 boost 库的相对路径),我想出了这个:

-bash-3.2$ g++ -I./include -L./lib main.cpp -lthread
/usr/bin/ld: cannot find -lthread
collect2: ld returned 1 exit status

我一直在尝试各种东西,例如指定更深入的包含/库目录的路径,但没有运气,我觉得我在死胡同。有任何想法吗?仅供参考,我正在寻找使用 boost 1.49.0。

4

1 回答 1

1

尝试:

g++ -I./include -L./lib main.cpp -lboost_thread

您需要指定的库的名称-l来自.so文件:省略开头lib.so(例如libboost_thread.so-> -lboost_thread

于 2012-04-16T01:46:10.450 回答