dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

Windows7 64bit環境でMinGW/MSYSを使ってRuby2.1.0をコンパイルする方法

 64bit環境でMinGW/MSYSでRuby2.1.0をコンパイルするにはちょっとした工夫が必要です。コンパイル中に作成されて動作するminiruby.exeがこけるのが問題です。

 

MinGW/MSYS(32bit版)

MinGW/MSYSのインストール、拡張ライブラリの準備等は前の日記を参照して下さい。

・configureスクリプトにクロスコンパイルであると認識させることがポイントです。コンパイラそのものがクロスコンパイルの機能を持っているわけではないのですけど・・・。

・configureスクリプトはクロスコンパイルの場合に旧版のRubyを要求するので、環境変数をセットします。

PATH=/c/Ruby200/bin:$PATH

・あとは以下の手順でOKです。

cd ruby210c
configure --enable-shared --prefix=/Ruby210 --build=x86_64-w64-mingw32 --host=i686-pc-mingw32
#==> checking whether the C compiler works... yes
make
make install main

・これでconfigureスクリプトは64bit環境で32bitバイナリを作ると認識し、コンパイル中に出来るminiruby.exeを使わずに、環境変数で指定した旧版のRubyを使って拡張ライブラリのコンパイルを行うようにMakefileを作ります。

・このビルドは libgcc_s_dw2-1.dll を必要とするので、MinGW\bin\ から Ruby210\bin\にコピーしておきます!

・このビルドはUTF-8の日本語処理に問題が見られます!

MinGW/MSYSにパスを設定して、Railsのインストールまで問題なく行えます。

gem update --system
gem update rake
SET Path=%Path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin
gem install rails --no-ri --no-rdoc

Railsを使う場合のsqlite3の問題については前の日記を参照してください。