3

次のコマンド ラインを使用して、C++ で記述されたプログラムをコンパイルしようとしています。

g++ test.cpp pugixml-1.0/src/pugixml.cpp -lcurl -lmysqlclient -lmysqlcppconn-static -lboost_thread

これは Debian 32 ビット マシンでは問題なく動作しますが、Ubuntu 64 ビットでは失敗し、その理由はわかりません。mysql を使用するために必要なすべてのパッケージをインストールしました。エラー メッセージは次のようになります。

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libmysqlcppconn-static.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_init()':
(.text+0x1): undefined reference to `mysql_thread_init'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libmysqlcppconn-static.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::thread_end()':
(.text+0x11): undefined reference to `mysql_thread_end'
etc. ...
collect2: ld returned 1 exit status

メッセージは非常に長く、すべての行は参照を変更すると非常によく似ています;)

4

1 に答える 1

3

-lmysqlclient -lmysqlcppconn-staticリンカー呼び出しでの順序を逆にしてみてください。

オブジェクト A がオブジェクト B からのシンボルを必要とする場合、A はリンカー コマンド ラインで B の前になければなりません。

于 2012-05-25T13:08:31.820 に答える