如果我没有放置-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): In function `__static_initialization_and_destruction_0(int, int)': 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()'
你知道我应该调查什么来解决这个问题吗?(我使用gcc 4.6.3)
Sam*_*ler 27
您链接库的顺序很重要,在您的情况下,您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()'
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您应该将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**
Run Code Online (Sandbox Code Playgroud)
或者,构建libmylibrary.so为共享库并boost_system直接链接到库.