即使我包含库,也会发生增强链接错误

Boost link error occurs even though I'm including the library

本文关键字:增强 链接 错误 包含库      更新时间:2023-10-16

我正试图在TravisCI上构建一个依赖boost的项目。运行g++命令时:

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

它得到这个链接错误:

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

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

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

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

为什么这个链接不正确

将库放在链接器命令中的对象文件之后。

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