19

フラグを立てていなければ、このエラー メッセージは理解できます-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 を使用)

4

1 に答える 1

31

ライブラリをリンクする順序は重要です。あなたの場合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ライブラリに直接リンクします。

于 2013-03-10T03:49:24.900 に答える