スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MySQL 5.5.xのソースからのビルド失敗例

ネットでも同様の例はありつつも、解決策を記述しているところはなかったので紹介しておきます。

LinuxでソースからMySQL 5.5.xをビルドしたときに、
環境変数の設定によってはビルドに失敗してしまいます。
具体的には、「C_INCLUDE_PATH」を設定していると、以下のようなエラーになります。


[ 0%] Built target INFO_BIN
[ 0%] Built target INFO_SRC
[ 0%] Built target abi_check
[ 2%] Built target zlib
[ 7%] Built target readline
[ 8%] Built target mysqlservices
[ 15%] Built target strings
[ 31%] Built target mysys
[ 31%] Built target dbug
[ 31%] Built target comp_err
[ 31%] Built target GenError
[ 31%] Built target blackhole
[ 31%] Built target example
[ 32%] Built target csv
[ 46%] Built target innobase
[ 46%] Built target archive
[ 47%] Built target federated
[ 51%] Built target heap
[ 51%] Built target hp_test1
[ 51%] Built target hp_test2
[ 59%] Built target myisam
[ 60%] Built target myisam_ftdump
[ 60%] Built target myisamchk
[ 60%] Built target myisamlog
[ 61%] Built target myisampack
[ 65%] Built target perfschema
[ 65%] Built target mytap
[ 65%] Built target pfs-t
[ 65%] Built target pfs_instr-oom-t
[ 65%] Built target pfs_instr-t
[ 65%] Built target pfs_instr_class-oom-t
[ 66%] Built target pfs_instr_class-t
[ 69%] Built target myisammrg
[ 69%] Built target auth
[ 69%] Built target auth_socket
[ 69%] Built target auth_test_plugin
[ 69%] Built target qa_auth_client
[ 69%] Built target qa_auth_interface
[ 69%] Built target qa_auth_server
[ 70%] Built target semisync_master
[ 70%] Built target semisync_slave
[ 71%] Built target audit_null
[ 71%] Built target daemon_example
[ 71%] Built target ftexample
[ 72%] Built target vio
[ 73%] Built target regex
[ 73%] Built target thr_lock
[ 73%] Building C object libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o
/usr/local/src/mysql-5.5.22/sql-common/client.c:1936: error: ‘cli_list_fields’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c:1937: error: ‘cli_read_prepare_result’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c:1938: error: ‘cli_stmt_execute’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c:1939: error: ‘cli_read_binary_rows’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c:1940: error: ‘cli_unbuffered_fetch’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c:1942: error: ‘cli_read_statistics’ undeclared here (not in a function)
/usr/local/src/mysql-5.5.22/sql-common/client.c: In function ‘cli_read_query_result’:
/usr/local/src/mysql-5.5.22/sql-common/client.c:3807: 警告: implicit declaration of function ‘handle_local_infile’
make[2]: *** [libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o] エラー 1
make[1]: *** [libmysql/CMakeFiles/clientlib.dir/all] エラー 2
make: *** [all] エラー 2



エラー内容としてはMySQL内で利用されている共通関数定義が見つからず、エラーになっている感じです。なので、無理矢理インクルードファイルの相対パスを指定するように修正するとコンパイルまでは通るのですが、結局リンクに失敗します。

このエラー、正確には「C_INCLUDE_PATH」に「コロン(:)」が含まれていると失敗するようで、例えば以下のように「C_INCLUDE_PATH」が定義されていると失敗しません。

export C_INCLUDE_PATH=/usr/local/include

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include


とはいえ、普段から環境変数に「C_INCLUDE_PATH」や「LD_LIBRARY_PATH」などを設定しておくのはよくない習慣とされていますので、最初から設定しておかないに限ります。

MySQL 5.5.xに限らず、同じような例はいくつかあるようなので、もし同じようなエラーが発生した場合は「C_INCLUDE_PATH」を疑ってみるといいかも知れません。
スポンサーサイト
プロフィール

Kou

Author:Kou
モバイル関連の開発ばかりやってる人のブログです。たまにWebもやります。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。