c++ - 即使我包含库,也会发生 Boost 链接错误

标签 c++ boost

我正在尝试在 TravisCI 上构建一个依赖于 boost 的项目。当它运行时 the g++ command :

g++ -Wall -L/usr/lib -fopenmp -lboost_system -lboost_filesystem -o bin/test obj/data_parser.o obj/hmm.o obj/test.o

它得到 this linking error :

data_parser.cpp:(.text+0x136a): undefined reference to `boost::system::generic_category()'

但我不仅在 g++ 命令中包含了 -lboost_system,我还知道 /usr/lib/libboost_system.so exists .

这是在带有 g++ 4.6.3 的 Ubuntu/Linaro 4.6.3-1ubuntu5 系统上。我安装了 boost 库:

sudo apt-get install libboost-dev libboost-filesystem1.46-dev libboost-iostreams1.46-dev libboost-system1.46-dev

为什么这个链接不正确?

最佳答案

在链接器命令中将库放在目标文件之后。

对象和库按顺序链接;和库代码仅在需要解析当前链接对象中的引用时才链接。通过将它们放在首位,在处理它们时没有未解析的引用,因此没有代码从它们链接。

关于c++ - 即使我包含库,也会发生 Boost 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23298896/

相关文章:

c++ - 使用 Boost::units 在两个数量之间进行转换的最简单方法?

boost - 如何在不影响插入顺序的情况下替换多索引容器中的项目?

c++ - 如何格式化不带引号的 boost 路径对象?

c++ - 尝试与 boost_timer 链接时出现 DSO 错误

c++ - 运行时错误 : addition of unsigned offset

c++ - 通过通用引用传递的函数的 std::forward?

c++ - 不同上下文中的 QtQuick 动态对象

c++ - 使用 boost_any 时是否可以避免开销?

c++ - c++ 中的高性能代码(继承、指向函数的指针、if)

c++ - 为什么公共(public)重载与某些编译器上的私有(private) using 指令冲突?