-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
ライブラリに直接リンクします。