c++ - 忽略以前版本的 boost C++

标签 c++ boost linker boost-thread

我必须在一台包含旧版本 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/

相关文章:

c++ - 某些平台上的变量初始化并非随处可见

C++传递指向静态函数的指针在执行期间更改值

c - 这些不同的 gcc 链接选项如何改变最终的可执行文件?

c - 与使用 namespace 的外部库链接时如何解决 C 中 undefined reference ?

c++ - Visual Studio 2010 c++ 与 MySql 连接速度慢

c++ - 创建 boost::tuple<std::string, std::string, int> 和 std::vector<int> 的映射

c++ - Boost Spirit 罗马数字解析器示例

c++ - boost 日志链接器错误

c - 在 C 编程中,如何将两个头文件和 3 个 c 文件链接到一个可执行文件中?

c++ - 使用 Qt Creator 在 Windows 中为 Linux 构建 Qt 应用程序