如果没有放置-lboost_system标志,我会理解此错误消息,但实际上它在这里:

g ++ -o build / myproject build / main / main.o -L / usr / local / boost / boost_1_52_0 / boost / libs -L / usr / lib -Lbuild -L。 -lboost_system -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary
build / libmylibrary.a(library.o):在函数__static_initialization_and_destruction_0(int,int)中:
library.cpp :(。text + 0x25f):对`boost :: system :: generic_category()'的未定义引用
library.cpp :(。text + 0x269):对`boost :: system :: generic_category()'的未定义引用
library.cpp :(。text + 0x273):对`boost :: system :: system_category()'的未定义引用


您有什么想法要解决这个问题吗? (我使用gcc 4.6.3)

最佳答案

链接库的顺序很重要,在您的情况下,您有library.cpp显然使用了boost_system

library.cpp:(.text+0x25f): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x269): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x273): undefined reference to `boost::system::system_category()'


为了解决这个问题,您应该将boost_system库移到链接行的末尾

g++ -o build/myproject build/main/main.o -L/usr/local/boost/boost_1_52_0/boost/libs -L/usr/lib -Lbuild -L. -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary **-lboost_system**


或者,将libmylibrary.so构建为共享库,然后直接链接到boost_system库。

关于gcc - 为什么即使我确实链接了boost_system,也“未定义对`boost::system::generic_category的引用”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15280882/

10-11 22:09
查看更多