2010-12-07 3 views
2

私はMAC OSXを使用して、ちょうどローカルデータベースへの接続をテストする「試験」msyqlアプリを作成しようとしています:なぜMAC OSX上で簡単なmysql cアプリケーションをコンパイルするときに未定義のシンボルが得られますか?

#include <my_global.h> 
#include <mysql.h> 


int main(void) 
{ 
    MYSQL mysql; 

    mysql_init(&mysql); 
    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "examplemysql"); 
    if(!mysql_real_connect(&mysql, "localhost", "someuser", "somepassword", "sampledb", 0, NULL, 0)) 
    { 
     fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql)); 
    } 

} 

私はコマンドを使用してコンパイル:gccの-Iは/ usr/local/mysqlの/含ま-Lは/ usr/local/mysqlの/ libにmysql.c

I取得から参照する次のエラー

未定義シンボル
"_mysql_options"、:cceohP7E.oで
_main から参照 "_mysql_real_connect":cceohP7E.o

_main:から参照cceohP7E.o
"_mysql_error" で
_main、:から参照cceohP7E.o

_main "_mysql_init"、 LD:記号(S)
collect2はが見つかりません:ldは私はC/Unixの専門家だが、私は勉強したい

1つの終了ステータスが返されました。私はここで64ビットアーキテクチャを実行していることを知っています。これは問題になりますか?私が間違っていることを教えてください。

ありがとうございました。

+0

リンカーがインクルードヘッダーを見つけられていないか、適切なヘッダーでないリンカーです。呼び出す関数がこれらのヘッダーに定義されていることを確認してください。 – Falmarri

+0

私はヘッダーファイルを検索していますが、正確には "_mysql_options"などは見つかりませんでした。私の質問は、 "_mysql_options"はどこから来たのですか? – EDJ

答えて

3

に他の人が述べたように、あなたはライブラリを逃しています。幸い、MySQLは、コマンドラインのmysql_configを経て、これは簡単です:

gcc `mysql_config --include` mysql.c `mysql_config --libs` 
+0

ショートカットありがとうございます:) – EDJ

1

共有ライブラリlibmysql.soにリンクする必要があります。これらのリンカーエラーは、他のシンボルを検索しようとしています。

このような何か...

gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib mysql.c -lmysql

+0

私は正しい方向に向いてくれてありがとう。 – EDJ

1

私はそれは私のために困難だったという理由だけで... OSXライオンのために、これを探して、誰のために、この答えを更新しています。

mysql_configは1つのオプションです。gccフラグを自分で指定することもできますが、右のCコネクタがなければすべて失敗します。

すべて私はライオン10.7.4のMacBookの空気にだと私は私がhttp://ftp.dc.aleron.net/pub/mysql/Connector-C/

untarしからもらったのmysql-コネクタ-C-6.0.2-OSX10.5-x86-64bit.tarをダウンロードして解凍します/ usr/local/bin、/ usr/local/include、/ usr/lical/libディレクトリにそれぞれコピーします。

次に、私は gcc -oを使用しました。 mysqlapp mysqlapp.c -L/usr/local/lib -l mysqlclient -lz -I/usr/local/include

mysqlapp.cはmysql.hを使用し、すべてがコンパイルされて正常に動作します。最初にwww.mysql.comからダウンロードしたコネクタは正しく動作しませんでした。私は何が起こったのか分かりません。

関連する問題