我必须在一台包含旧版本 C++ boost 库的机器上进行演示。具体来说,我需要 boost::thread
,我在其中使用 mutex
类的 lock
成员函数。很遗憾,旧版本 (1.33.1) 不包含此方法。
我在目标机器上没有root权限,我无法卸载之前版本的boost。我的解决方案是在目标机器上预编译更新后的库,然后只链接到更新版本的库。
库编译部分很顺利,一切顺利,但当我尝试编译时,它仍然显示它使用的是旧版本的 boost。我四处看了看(这里是 g++ 菜鸟),发现您可以首先使用 -L
和 -I
手动指定一个位置来查找 header 和库旗帜。我尝试将它们与相对路径一起使用(因为我不知道将执行演示的目录,但我知道我的新 boost 库的相对路径),我想到了这个:
-bash-3.2$ g++ -I./include -L./lib main.cpp -lthread
/usr/bin/ld: cannot find -lthread
collect2: ld returned 1 exit status
我一直在尝试各种方法,例如在 include/library 目录中指定一条更深的路径,但没有成功,我觉得自己走到了死胡同。有任何想法吗? 仅供引用,我希望使用 boost 1.49.0。
最佳答案
尝试:
g++ -I./include -L./lib main.cpp -lboost_thread
您需要为 -l
指定的库的名称来自 .so
文件:省略开头的 lib
和.so
(例如 libboost_thread.so
-> -lboost_thread
)
关于c++ - 忽略以前版本的 boost C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167802/