PHP-4.4.4 に、–with-mysql オプションをつけてビルドしようとしたところ、configure は問題なくとおりましたが make の実行中にエラーが発生して止まってしまいました。

undefined reference to ‘mysql_drop_db’
undefined reference to ‘mysql_create_db’

make の途中で発生したエラーなのでどうしたものかと思っていたのですが、下記のような記事を見つけ、本来は不要な関数をコンパイルしようとしているために発生しているのだということが分かりました。
SE,プログラマーのための無料の求人,求職,人材サイト Programmer’s
http://www.databasebank.com/programmers/frm_detail.php?v_id=1393
上記の記事ではソースファイルの該当行をコメントアウトすることで解決したようですが、その付近に #ifdef MYSQL_VERSION_ID < 40000 という行があったので、定義で回避できるのではないかと思い、やってみました。 ソースツリーのトップにある Makefile を開き、下記の行を追加します。場所はどこでも構わないと思いますが、MYSQL_ が集まっているあたりにしました。私の環境ではバージョン番号は 4.1.20 でしたので、40120 にしました。

MYSQL_VERSION_ID = 40120

make clean してから make します。コンパイルが無事通りました。
本当は、configure などの準備段階で MYSQL_VERSION_ID にしかるべき値がセットされるはずだと思うのですが、ここらへんの不具合といえるのかもしれません。

カテゴリー: サーバ関連

0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください