64bit Linuxマシーンで32bit rubyを使う際のgem trouble

2013/03/18 18:59 に 森山誠二郎 が投稿

64-bit CentOS 上の 32-bit Ruby に gem で拡張ライブラリをインストールAdd Starに詳しく書かれている

私の場合、32bit版のruby で、gem install chefしたところ、実行時に以下のエラーが発生:

/home/anagix/anagix_tools/lib/ruby/gems/1.8/gems/yajl-ruby-1.1.0/lib/yajl/yajl.so: wrong ELF class: ELFCL\

ASS64 - /home/anagix/anagix_tools/lib/ruby/gems/1.8/gems/yajl-ruby-1.1.0/lib/yajl/yajl.so

/home/anagix/anagix_tools/lib/ruby/gems/1.8/gems/yajl-ruby-1.1.0/lib/yajl/yajl.so

これは、yajl.soが64bitにコンパイルされたのが原因。対策は、上記のサイトの通り、
  # yum install glibc-devel.i386
  $ env CONFIGURE_ARGS="--with-cflags='-m32' --with-ldflags='-m32'" gem install chef --no-ri --no-rdoc

これまでは、32bit OS上で、gem をnative installし、コピーしていたから問題が顕在化しなかった!
Comments