c/fe

http://d.hatena.ne.jp/uzulla から移行しました。

sqlite3-rubyがうまく入らなかった

MacPortでRubyの最新版と、sqlite3をいれまして、そんでsqliteのRubyExtentionをいれようとしたんですけど。

MAC:~ uzulla$ sudo gem install sqlite3-ruby -- --with-sqlite3-include=/opt/local/include --with-sqlite3-lib=/opt/local/lib
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install sqlite3-ruby
checking for fdatasync() in -lrt... no
checking for sqlite3.h... yes
checking for sqlite3_open() in -lsqlite3... yes
creating Makefile

make
/usr/bin/gcc-4.0 -I. -I. -I/opt/local/lib/ruby/1.8/i686-darwin9 -I. -DHAVE_SQLITE3_H -I/usr/local/include -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/opt/local/include -fno-common -O2 -fno-common -pipe -fno-common -c sqlite3_api_wrap.c
cc -dynamic -bundle -undefined suppress -flat_namespace -o sqlite3_api.bundle sqlite3_api_wrap.o -L. -L/opt/local/lib -L/usr/local/lib -L. -L/opt/local/lib -lruby -lsqlite3 -lpthread -ldl -lobjc
ld: in /usr/local/lib/libstdc++.6.dylib, file is not of required architecture
collect2: ld returned 1 exit status
make: *** [sqlite3_api.bundle] Error 1


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/gem_make.out
HAL:~ zishida$ sudo gem remove sqlite3-ruby
ERROR: While executing gem ... (RuntimeError)
Unknown command remove

こんな感じでエラーになりまくりです。

ld: in /usr/local/lib/libstdc++.6.dylib, file is not of required architecture
って何よ、どういうことよ。

なんだ、PPC向けになっちゃってるの?

export ARCHFLAGS="-arch i386"
とかしたけれど、駄目。

そもそも「有名な」ライブラリがlocalの中に?

localの物を参照してるのがよくわからん、ので、とりあえず
/opt/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/
の中のMakefileをLibDIRを/usr/local/lib > /usr/libに変えてみたらmake通った。


よし、make通ったってことで改めてgemたたいたけど、駄目でした。
(毎度Makefileを作っちゃうらしい)

あーもーめんどくせー

ってことで、/usr/local/lib/libstdc++.6.dylibをリネームして退けた。


なんという荒療治。


しかしinstall成功したw

ちゃんと動いた

railsのMigrateとか動いた。