2012-06-28 12 views
16

私はこの問題の答えを高く探しています。私はブースト1.48を使用しています。プログラムは非常にシンプルです。なぜなら、私はこの問題を解決するために簡単な形式に壊してしまったからです。g ++未定義の `boost :: system :: system_category() 'への参照

#include <boost/filesystem.hpp> 

int main(int argc, char **argv) { 
    return 0; 
} 

次のように私のMakefileから実行したコマンド++ gは次のとおりです。

g++ -m32 -Wall -o mapnik-test -L/usr/lib -I/usr/include -I/usr/include/freetype2 -lpthread -lboost_system mapnik-test.cpp 

エラーの完全なリストリンク時、次のとおりです。

/tmp/ccIbmuee.o: In function `__static_initialization_and_destruction_0(int, int)': 
mapnik-test.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()' 
mapnik-test.cpp:(.text+0x53): undefined reference to `boost::system::generic_category()' 
mapnik-test.cpp:(.text+0x5d): undefined reference to `boost::system::system_category()' 
collect2: ld returned 1 exit status 
make: *** [mapnik-test] Error 1 

私が苦しんでいる多くの人を発見しました同じ問題ですが、ほとんどの場合、解決策はLDFLAGSにboost_systemライブラリを提供することでした。 g ++のコマンドラインからわかるように、私はすでにこれを指定しています。私はlibboost_system.aライブラリとの明示的なリンクも無用にしようとしました。私はこの苦情の唯一の人ですか?

答えて

27

ソースファイルをコマンドラインの先頭に置きます。

は、リンカーは、ソース・ファイル内の未定義の参照を解決できるようにライブラリが唯一のソースファイルの後に指定する必要があります

g++ -m32 -Wall mapnik-test.cpp -o mapnik-test -L/usr/lib -I/usr/include -I/usr/include/freetype2 -lpthread -lboost_system 

を試してみてください。

関連する問題