読者です 読者をやめる 読者になる 読者になる

dari88's diary

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

RubyInstallerのRuby DevKitを使ってRuby2.1.0をコンパイルする方法

 DevKitはRubyコンパイルにも使えます! DevKitの64-32版を使うのがベストです。

 

Ruby DevKit(32bit版)を使う方法

・環境: Windows7 32bit または 64bit

RubyInstallerが配布しているDevKitMingw/MSYSそのものです。

・まずはDevKit-tdm-32-4.5.2-20111229-1559-sfx.exe 使います。

・32bit版はTDM版のMinGWを使っている模様です。コンパイラはmingw32のgcc version 4.5.2 (tdm-1)です。ちょっと古いですね。

・c:\DevKit\msys.batのリンクを作り、プロパティのリンク先に -mintty を追加します。ついでに名前とアイコンも変えておきましょう。

c:\DevKit\msys.bat -mintty

・fstabファイルとかいじる必要はありません。

・入手してある拡張ライブラリのbin\,lib\,include\フォルダをc:\DevKit\mingw\にコピーします。

・minttyが起動したら透過率、文字サイズ、ウインドウサイズを変更しておきましょう。

・Ruby2.1.0のソースをc:\DevKit\home\ユーザー名 の下にコピーします。

・後の手順は前の日記のMinGW/MSYSと同じでOKです。もしかしたらbuildとかhostの指定は不要かもしれませんが、試していません。

・TDM版のMinGWによるビルドは外部のdllを要求しません。

・このビルドはUTF-8の日本語の扱いに問題があります!

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

set Path=%Path%;C:\DevKit\mingw\bin;C:\DevKit\bin 

 ・パスの順番は重要です。DevKitにもいろいろ入っているので配慮が必要です! 間違えるとRubyの気が狂う可能性があります。

 

 Ruby DevKit(64→32bit版)を使う方法

・環境: WIndows7 32bit
・64bit環境ではopensslがうまく機能しません。また、VM上の32bit環境でもopensslに問題が残ります。

・今度はDevKit-mingw64-32-4.7.2-20130224-1151-sfx.exeを使います。

・このコンパイラi686-w64-mingw32でgcc version 4.7.2 (rubenvb-4.7.2-release)となっています。

・特にコンパイルオプションを気にしなくても32bitバイナリにコンパイルしてくれます!

・拡張用ライブラリはRubyのソースディレクトリ下に入れます。あとでlibとbinの環境変数の設定をします。

・旧版のopensslはインストールしてくれません!

OpennSSLから最新版を持ってきて、DevKitでコンパイルしたものを使います。

cd openssl
configure mingw64 no-asm shared --prefix=/home/openssl
make depend
make
make install

・あとは以下の手順でコンパイルできます。

PATH=/c/Ruby200/bin:$PATH
export LIBRARY_PATH BINARY_PATH
LIBRARY_PATH=/home/ユーザ名/ruby210c/lib
BINARY_PATH=/home/ユーザ名/ruby210c/bin

cd ruby210c
configure --enable-shared --prefix=/Ruby210d6432 --disable-install-rdoc --build=x86_64-w64-mingw32 --host=i686-w64-mingw32
make
make install
 

・最初に環境変数の設定をしています。

・configureではRdocをインストールしないように指示しています。

・このビルドは外部のdllを要求しません。

・このビルドはUTF-8の日本語表示が正常です!

・この方法が最も簡単に正常なRubyコンパイルする方法だと思います。

 

686-w64-mingw32
i686-w64-mingw32
i686-w64-mingw32
i686-w64-mingw32