0
私はUbuntu 14.04を使用しており、すでにlibmysqlclient-dev
パッケージをインストールしました。しかし、私は常にmysql_init
シンボルがないので、リンクエラーが発生します。 次のように私のソースコード、Makefileには、実行時の結果とシンボル情報は、次のとおりです。libmysqlclient.aをリンクできません。
[email protected]/~/project/m01/uuid_sign>cat main.cpp
#include <cstdio>
#include <cstdlib>
#include "mysql/mysql.h"
int main(int argc,char** argv)
{
auto con = mysql_init(nullptr);
//printf("mysql client version : %s\n",mysql_get_client_info());
exit(EXIT_SUCCESS);
}
[email protected]/~/project/m01/uuid_sign>LANG= && make -B
g++ -o main.o -c main.cpp -std=c++11 -ggdb
g++ -o uuid_sign -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -ldl main.o
main.o: In function `main':
/home/igsrd/project/m01/uuid_sign/main.cpp:6: undefined reference to `mysql_init'
collect2: error: ld returned 1 exit status
make: *** [uuid_sign] Error 1
[email protected]/~/project/m01/uuid_sign>nm -C /usr/lib/x86_64-linux-gnu/libmysqlclient.a | grep mysql_init
0000000000002b10 T mysql_init
0000000000002d30 T mysql_init_character_set
U mysql_init_character_set
ソースは非常に簡単です、ただmysql_init()
を呼び出すための1行を。 プロセスにコンパイラとリンカーのオプションがすべて表示されているので、欠落しているオプションはありません。
エラーメッセージには、エラーをリンクするundefined reference
あるので、私はmysql_init
をgrepするためにlibmysqlclient.a
をダンプし、それが未定義の状態ではありません。
今私は本当に分かりません。これには何が問題なのですか?
を、私は右、ライブラリーまず、その後、私のオブジェクトファイルをリンクする必要がありますか? – naive231