Ubuntu11.04x64で32ビットアプリケーションをビルドしようとしています。libboostのリンカーエラーが原因で、ビルドに問題が発生しています。buildステートメントにはその-lboost_system
中に含まれていますが、ビルドしようとすると、次のようなものがたくさん表示されます。
CommunicationModule.cpp:(。text + 0x68c1):未定義の参照
boost::system::generic_category()
CommunicationModule.cpp:(。text + 0x68d7):未定義の参照
boost::system::system_category()
グーグルで見つけたものはすべて、boost_systemライブラリにリンクする必要があると言っています。私が見つけた場所の1つは、直接リンクしてみると言っていますが、リンクするとlocate boost_system
結果は空になります。やってみると、sudo apt-get install libboost-system-dev
すでにインストールされていることがわかります。私はここでちょっと途方に暮れています。ライブラリはインストールされていますが、検索で見つかりませんか?
boost :: systemに適切にリンクするために私が何をする必要があるか誰かに教えてもらえますか?私はLinuxとコンパイラの複雑さにかなり慣れていないので、ここで助けていただければ幸いです。
アップデート:
これがの出力ですdpkg -L libboost-system1.42-dev
:
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libboost-system1.42-dev
/usr/share/doc/libboost-system1.42-dev/copyright
/usr/share/doc/libboost-system1.42-dev/NEWS.Debian.gz
/usr/share/doc/libboost-system1.42-dev/README.Debian.gz
/usr/lib
/usr/lib/libboost_system.a
/usr/lib/libboost_system-mt.so
/usr/lib/libboost_system-mt.a
/usr/lib/libboost_system.so
これらの1つに直接リンクするために使用できるフラグはありますか?私は使ってみ-L /usr/lib/libboost_system.so
まし-L /usr/lib/libboost_system-mt.so
たが、どちらも問題を解決しませんでした。ビルドステートメントに/usr/lib/libboost_system.a
とを追加するだけでも同じです。/usr/lib/libboost_system-mt.a
コンパイル行は次のとおりです。
g++ -m32 -Wl,-O1 -o UTNaoTool [.o files] -L/usr/lib32 -lqglviewer-qt4 -lqwt-qt4 -lboost_system -lboost_thread -lQtXml -lQtOpenGL -lQtGui -lQtNetwork -lQtCore -lGLU -lpthread
アップデート2:
Boost 1.49をダウンロードし、32ビット用にすべてをビルドしましたが、それが役に立ったようです。多くのエラーはなくなりましたが、今でも次のエラーが発生しています。
CommunicationModule.cpp:(。text+0x68c1):boost :: system :: get_generic_category()への未定義の参照
機能が異なることに注意してください。したがって、私のエラーはすべて、get_system_category()
現在への未定義の参照に関するものget_generic_category()
です。ビルドコマンドにを追加しようとしました-lboost_filesystem
が、これは修正されませんでした。ビルド時にビルドした32ビットライブラリを参照していることを確認しましたlibboost_system
。