プロが教える店舗&オフィスのセキュリティ対策術

OS:MacOSX10.5.1
ruby:1.8.6
rails:2.0.2

macにmysql/rubyをインストールしようとしているのですがmakeすることが出来ず困っています。エラー内容は以下の通りです

Macintosh:mysql-ruby-2.7.3 atsuhiroteshima$ make
cc -arch ppc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch ppc -arch i386 -lruby -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -lpthread -ldl -lm
ld: warning in /usr/local/mysql/lib/mysql/libmysqlclient.dylib, file is not of required architecture
Undefined symbols for architecture ppc:
"_mysql_store_result", referenced from:
_store_result in mysql.o
_query in mysql.o
"_mysql_stmt_errno", referenced from:
_mysql_stmt_raise in mysql.o
_stmt_prepare in mysql.o
_stmt_result_metadata in mysql.o
"_mysql_stmt_error", referenced from:
_mysql_stmt_raise in mysql.o
"_mysql_options", referenced from:
_options in mysql.o

     (中略)

"_mysql_fetch_field", referenced from:
_fetch_field in mysql.o
"_mysql_get_proto_info", referenced from:
_proto_info in mysql.o
"_mysql_errno", referenced from:
_mysql_raise in mysql.o
_my_errno in mysql.o
"_mysql_error", referenced from:
_mysql_raise in mysql.o
_my_error in mysql.o
"_mysql_escape_string", referenced from:
_escape_string in mysql.o
ld: symbol(s) not found for architecture ppc
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/+b/+b2BrDwnESy62VzzTJy9k++++TI/-Tmp-//cc8ile28.out (No such file or directory)
make: *** [mysql.bundle] Error 1

どなたかこのエラーの解決方法を教えていただけないでしょうか。
お願いします。

A 回答 (5件)

僕はleopard、最初からのrubyでmysql/rubyを入れているので大丈夫だと思ったのですがだめでしたか。


もしかしたら、makeの前でパスの指定が間違ってるのかもしれませんね。(makeの段階まで来てるという事は大丈夫のだと思うのですが
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ありません。mysql/rubyはleopardには初期状態では入っていないようでした。

結局、osを再インストールし、mysqlのdmgファイルを使ってmysqlをインストールした後、gemを使って、mysql/rubyをインストールしたところなんとかうまくいきました。

どうやら、mysql/rubyのファイルをダウンロードするよりは、gemsを使ってインストールする方がよいようです。

makeに関しては、結局できずに終わりましたがbabe335さんのアドバイス非常に参考になりました。ありがとうございました。

お礼日時:2008/01/09 23:28

>となりました。



まだ別のエラーが出てます?
通常は適当なディレクトリに展開して、
./configure
make
sudo make install

のような手順で進めることが多いです。

> /Library/Ruby/Gems/1.8/gems/mysql-2.7/
> のディレクトリにMakefileがあります。

OS Xのディレクトリ構成はよく知りませんが、これは最終的なインストール先になるべきところではないでしょうか?
あーでも gem経由でやったんでしたっけ。
    • good
    • 0
この回答へのお礼

sakusakerさん、アドバイスありがとうございます。返事が遅くなりすいません。

osを再インストールして、gemsを使って再度mysql/rubyをインストールしてみたところ、今度はうまくいきました。


よくは分かりませんが、macportsとgemsをどちらも使ってごちゃごちゃいろいろなものをインストールしたのがよくなかったみたいです。(まだunixの操作になれてないので、どうやってgemsやportを結びつけるかわかりませんでした。)

親切に何度もアドバイスをいただきありがとうございました。

お礼日時:2008/01/09 23:35

> これはmysql.bundleというファイルに問題があるということでしょうか?


mysql.bundleは、これから作ろうとするファイルです。

>ld: can't open output file for writing: mysql.bundle
「書き込みのためにオープンすることができない」ってでてるでしょ?
ありがちなのは、書こうとしているディレクトリに対する書き込み権限がないということですけど、
どこのディレクトリに展開して makeをどこで実行していますか?

#sudo は make installのときだけでいいはずだよなあ
    • good
    • 0
この回答へのお礼

/Library/Ruby/Gems/1.8/gems/mysql-2.7/
のディレクトリにMakefileがあります。
rootで実行したところ
cc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -lruby -L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto -lpthread -ldl -lm

となりました。

お礼日時:2008/01/03 21:18

Makefileの3カ所から"-arch ppc"というのを削除してmakeは出来ませんか?



参考URL:http://d.hatena.ne.jp/sugarbabe335/20071212/1197 …
    • good
    • 0
この回答へのお礼

babe335さん。回答ありがとうございます。
試してみたところ、やはり次のようなエラーが出ました。

cc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -lruby -L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto -lpthread -ldl -lm
ld: can't open output file for writing: mysql.bundle
collect2: ld returned 1 exit status
make: *** [mysql.bundle] Error 1

これはmysql.bundleというファイルに問題があるということでしょうか?

お礼日時:2008/01/03 16:25

Mac OS X は使ってないので解決策じゃなくて申し訳ないんだけど、



>mysql_store_result
この辺の未定義シンボルって、MySQL側のライブラリにある関数ですよね。
で、

> -lmysqlclient -lz -lm -lpthread -ldl -lm

名前からしてこの libmysqlclient にある可能性が高いと思うんですが、

> ld: warning in /usr/local/mysql/lib/mysql/libmysqlclient.dylib, file is not of required architecture

のように、中身が期待したものじゃないみたいですね。

>cc -arch ppc -arch i386 -pipe -bundle
ユニバーサルバイナリを作ろうとしているのに、ライブラリがそれようになってないとか、片方のしかないとか。
    • good
    • 0
この回答へのお礼

sakusaker7さん回答ありがとうございます。

mysqlのことは、ほとんど知識がないのですが、それはつまりインストールしたMySQLのライブラリに問題があるということでしょうか?

MySQLはmysql-5.0.45-osx10.4-i686.dmgを使ってインストールしたのですが、このファイルにそのライブラリが含まれていなかったという理解が正しいのでしょうか?それとも単にPathが通ってないなどの問題なのでしょうか?

お礼日時:2008/01/03 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!