ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

MySQLコミュのMac OS X(Tiger)でDBDのmakeに失敗します

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になります。トピック作らせていただきました。
不適切でしたらすみません。

さて、オンラインで検索していろいろ情報を集め、Mac OS XでMySQLを使ってMovable Typeの利用しようと設定している途中ですが、DBDのmakeがうまくいきません。

1.環境
ハード: iMac G5
OS: Mac OS X 10.4.2 (Tiger)

2.これまでのインストール及び修正事項
Xcode Tools
Apache (perlモジュール、PHPモジュール、cgiを有効に)
MySQL (mysql-max-4.1.14-apple-darwin8.2.0-powerpc-64bit.dmg)
データベース作成済
DBI (DBI-1.48.tar.gz)

3.DBDのMakefile.PLの情報

cflags (mysql_config) = -I/usr/local/mysql/include -Os -arch ppc64 -fno-common
embedded (mysql_config) =
libs (mysql_config) = -L/usr/local/mysql/lib -lmysqlclient -lz -lm
mysql_config (guessed ) = mysql_config
nocatchstderr (default ) = 0
nofoundrows (default ) = 0
ssl (guessed ) = 0
testdb (default ) = test
testhost (default ) =
testpassword (default ) =
testsocket (default ) =
testuser (default ) =

4.makeでおかしそうなところ

(引用開始)
Warning: duplicate function definition 'do' detected in mysql.xs, line 224
Warning: duplicate function definition 'rows' detected in mysql.xs, line 559
(中略)
LD_RUN_PATH="/usr/lib" /usr/bin/perl myld env MACOSX_DEPLOYMENT_TARGET=10.3 cc -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle -L/usr/local/mysql/lib -lmysqlclient -lz -lm
/usr/bin/ld: dbdimp.o bad magic number (not a Mach-O file)
/usr/bin/ld: mysql.o bad magic number (not a Mach-O file)
/usr/bin/ld: truncated or malformed archive: /usr/local/mysql/lib/libmysqlclient.a (ranlib structures in table of contents extends past the end of the table of contents, can't load from it)
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/DBD/mysql/mysql.bundle] Error 1
(引用終了)

DBDのインストールに関するトラブル情報は、ネット上で検索し、
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
とつないだりか、make前に
perl -pi -e's/MACOSX/env MACOSX/' Makefile
としたり、
Makefile の myld に続く部分を
env MACOSX_DEPLOYMENT_TARGET=10.3 gcc -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm
に変更してみたりしてmake をしてみましたが、mysql.bundleがないというようなエラーがでます。
mysql.bundleがちゃんと作れていないのが原因かと思うのですが、勉強不足のため、頓珍漢な推測かもしれません。
お手数をおかけしますが、どなたかアドバイスお願いいたします。

コメント(13)

全然根拠のある提案じゃないのですが、

sudo gcc_select 3.3

でGCC3.3でビルドしてみるとか……。
(デフォルトは4.0)
お役にたてるかどうかわかりませんが、僕もDBDで苦労しました。
結果はldconfigの問題でした。mysqlをインストールすると古いライブラリーだけを見に行ってました。/etc/ld.so.confってOS Xにあります? 
見当違いだったらもうしわけない。
こむぎさん、Go Hey!さん、ありがとうございます。

GCC3.3でもだめでした。
/etc/ld.so.confはみつけられませんでした。

いろいろ試行錯誤してとにかくMakefileの条件設定の問題だと思うのですが、まだ解決していません。
またヒントがいただけましたら嬉しいです。
よろしくお願いいたします。
みなさん、お世話になっております。
いろいろ見てゆくと、根本的に
libmysqlclient.so
というファイルがないのですが、これはどうやって作成すればいいのでしょうか?
勉強不足ですみません。
詳しくないのでお役に立てないかもしれませんが、僕もTigerにDBDをインストール時に何度か失敗しました。結局面倒くさいから僕は .bashrc に PATH="$PATH:/usr/local/mysql/bin" とパスを通したぐらいでしょうか・・・何故かうまくいきました。
これだけでは何なので、、以下は残してあった成功した時のログ該当部分です。お役に立てますでしょうか。

PBG4 Tiger
DBI-1.48.tar.gz
DBD-mysql-2.9008.tar.gz
mysql-max-4.1.12-apple-darwin7.9.0-powerpc.dmg
を使用しています。
.....
Warning: duplicate function definition 'do' detected in mysql.xs, line 196
Warning: duplicate function definition 'rows' detected in mysql.xs, line 294
cc -c -I/Library/Perl/5.8.6/darwin-thread-multi-2level/auto/DBI/ -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -Os -DVERSION=?"2.9008?" -DXS_VERSION=?"2.9008?" "-I/System/Library/Perl/5.8.6/darwin-thread-multi-2level/CORE" mysql.c
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.bundle
LD_RUN_PATH="/usr/lib" /usr/bin/perl myld env MACOSX_DEPLOYMENT_TARGET=10.3 cc -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle -L/usr/local/mysql/lib -lmysqlclient -lz -lm
chmod 755 blib/arch/auto/DBD/mysql/mysql.bundle
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/DBD::mysql.3pm
.....
Fink (http://fink.sourceforge.net/index.php?phpLang=ja) でインストールできますよ.

http://fink.sourceforge.net/pdb/search.php?summary=mysql に MySQL に関係した DBI/DBD 関係のパッケージがみつかります.
どらいタイプさん、ありがとうございます。
でも・・・勉強不足でよくわかりません。
.bashrcってどこにあるのでしょうか。探しましたがみつからないです。

コーテルさん、Finkをとりあえずインストールしてみました。
勉強して使ってみます。
Finkだとsw以下に全部はいるんですね。
.bashrc はホームディレクトリにあります。
/Users/ユーザー名/.bashrc
無ければ、自分でファイルを作ればOKです。
UNIXではlibmysqlclient.soは
/usr/local/mysql/lib/mysqlにあります。
Mac OS Xはわからないのでもうしわけない。
どらいタイプさん、ありがとうございます!

Go Hey!さん、libmysqlclient.soはハードディスクの中を検索して隅から隅まで探しましたがありません。
はっはっはっ(開き直り)

もう少し頑張って勉強したいと思います。
HDD の中のファイルの検索には locate がつかえます.

(1) locate.update でインデクスを作成
$ sudo /usr/libexec/locate.updatedb

(2) locate で検索
$ locate libmysqlclient

これで見つからない場合はインストールされていないと考えていいと思います.

ちなみに,Mac OS X の場合は,libmysqlclient.so ではなく libmysqlclient.dylib です.
Linux とは共有ライブラリの形式の違いがあるためです.
Debian 3.1だと、/usr/lib/libmysqlclient.soで、
libdevel/libmysqlclient10-dev (3.23.56)
libdevel/libmysqlclient12-dev (4.0.24)
libdevel/libmysqlclient14-dev (4.1.11a)
のパッケージに入っています。Finkも似たようなものだと思ったら、おもいっきり違うのですね。
コーテルさん、locateで発見できたのは
libmysqlclient.a
libmysqlclient_r.a
だけでした・・・
あんまりメインのマシンをいじくっておかしくしたくないので、ほこりを被っている(もったいない!)PowerBook G4にTigerと最低限必要なものをインストールして、いろいろ確認してみることにします。
ありがとうございました。

ふゆねこさん、
情報ありがとうございます!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

MySQL 更新情報

MySQLのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング