ついでに名前とアイコンも変えておきましょう。-mintty・fstabファイルとかいじる必要はありません。・入手してある拡張ライブラリのbin\,lib\,include\フォルダをc:\DevKit\mingw\にコピーします。・minttyが起動したら透過率、文字サイズ、ウインドウサイズを変更しておきましょう。・後の手順は前の日記のMinGW/MSYSと同じでOKです。したらbuildとかhostの指定は不要かもしれませんが、試していません。・TDM版のMinGWによるビルドは外部のdllを要求しません。・このビルドはUTF-8の日本語の扱いに問題があります!・DevKitにパスを設定して、Railsのインストールまで問題なく行えます。・パスの順番は重要です。間違えるとRubyの気が狂う可能性があります。32bit・64bit環境ではopensslがうまく機能しません。VM上の32bit環境でもopensslに問題が残ります。・今度はDevKit-mingw64-32-4.7.2-20130224-1151-sfx.exeを使います。(rubenvb-4.7.2-release)となっています。・特にコンパイルオプションを気にしなくても32bitバイナリにコンパイルしてくれます!・拡張用ライブラリはRubyのソースディレクトリ下に入れます。あとでlibとbinの環境変数の設定をします。・旧版のopensslはインストールしてくれません!・OpennSSLから最新版を持ってきて、DevKitでコンパイルしたものを使います。install・あとは以下の手順でコンパイルできます。・最初に環境変数の設定をしています。・configureではRdocをインストールしないように指示しています。・このビルドは外部のdllを要求しません。・このビルドはUTF-8の日本語表示が正常です!・この方法が最も簡単に正常なRubyをコンパイルする方法だと思います。コンパイル64bit環境でMinGW/MSYSでRuby2.1.0をコンパイルするにはちょっとした工夫が必要です。コンパイル中に作成されて動作するminiruby.exeがこけるのが問題です。MinGW/MSYS(32bit版)・MinGW/MSYSのインストール、拡張ライブラリの準備等は前の日記を参照して下さい。・configureスクリプトにクロスコンパイルであると認識させることがポイントです。コンパイラそのものがクロスコンパイルの機能を持っているわけではないのですけど・・・。・configureスクリプトはクロスコンパイルの場合に旧版のRubyを要求するので、環境変数をセットします。PATH=/c/Ruby200/bin:$PATH・あとは以下の手順でOKです。main・これでconfigureスクリプトは64bit環境で32bitバイナリを作ると認識し、コンパイル中に出来るminiruby.exeを使わずに、環境変数で指定した旧版のRubyを使って拡張ライブラリのコンパイルを行うようにMakefileを作ります。Ruby210\bin\にコピーしておきます!・このビルドはUTF-8の日本語処理に問題が見られます!・MinGW/MSYSにパスを設定して、Railsのインストールまで問題なく行えます。--no-rdoc・Railsを使う場合のsqlite3の問題については前の日記を参照してください。64bit環境でMinGW/MSYSを使ってRuby2.1.0をコンパイルする方法Tweet広告を非表示にするもっと読むコメントを書く2014-02-08MinGW/MSYSでRuby2.1.0をコンパイルしてRails4.0をインストールまで大きなプログラムのコンパイルのお勉強ということで、RubyInstallerがまだ配布していないRuby2.1.0をビルドしてみました。全てGoogle先生に聞きながらやっていて泥沼にずっぽしハマりましたので、メモしておきます。64bit、VM上にXPの32bit版を入れてます。・Rubyをコンパイルすることの概念を知る上で良かったのは、たむらけんいちさんのこの記事でした。・RubyInstallerはMinGWでコンパイルしているし、DevKitもMinGWだし、合わせておいた方が良いような感じがします。・RubyinstallerのDevKitというのは殆どMinGWそのものですね。インストールするとコンパイラ用の環境変数とか自動的に設定されるようになるようです。その他にどんな機能があるのかはまだ分かりません。・Ruby2.0用のDevKitは今回ビルドしたRuby2.1.0を認識してくれません。騙してインストールしても、機能しませんでした。Railsをインストールするには奥の手が必要です。・configure時には--prefix=/Ruby210みたいに出力先を絶対パスで指定した方が吉です。・64bit環境でRuby2.1.0をMinGWでコンパイルするとio.cでエラーが発生します。しかたがないのでVM上のXP32bitでコンパイルしました。ちなみにMinGWの64bit版でもio.cで引っかかります。訳が分かりません!・CygWinは便利な感じですが、64bit環境で問題なくコンパイルできるものの、今の所使い物になりません。これはgemに対応するgem.batを作ってくれないのが原因です。それが何故かは今の所謎です。・Ruby2.1.0のソースはこちらからダウンロードします。MinGW/MSYS・32bit環境でないとRuby2.1.0はコンパイルできません!・最新版はここからダウンロードします。MSYSを起動するアイコンを作ってくれないので初めての人は訳が分からないと思います。・旧版はここからダウンロードします。インストールする時に、ライブラリをアップデートするように選択(ボタンをクリック)します。・インストール先はデフォルトが吉です。・MinGWとMSYSの構成とか、MSYSの設定に関してはこの記事を読むと役に立ちます。ネットでは環境変数をあれこれ設定するような話が出てきますが、ウソです。シンプルな方が安心だし、この記事の通りで正しくコンパイルできます。・追加のライブラリが必要です。files(もしかすると不要、試していません)http://jarp.does.notwork.org/win32/gdbm-1.8.3-1-mingw32.zippdcurses-2.60-1-mingw32.zip・これらを解凍して、bin\,lib\,include\をc:\MinGW\にコピペします。・MSYSを一度起動するとユーザーのホームディレクトリが作成されるので、Rubyのソースをコピーしておきます。・あとはGoogle先生が教えてくれるようにコンパイルします。log_inst.txt・/Ruby210でc:\Ruby210に出力されます。Rails4.0のインストール・基本的な流れは前回の日記を見てください。・旧版のRubyからsetrbvaes.batをコピーしてきて、Ruby2.1用のコマンドプロンプトを作ります。・上記までのままですと、gemのシステムのアップデートとrakeのアップデートは通りますが、JSONのインストールができません。・RailsInstallerのRuby2.0用のDevKitはこのビルドを認識してくれません。・対策として導入済みのMinGWを利用します。一時的な環境変数のPATHの先頭にC:\MinGW\binとC:\MinGW\msys\1.0\binを追加します。setrbvars.batのPATHの設定部分に追加すると良いでしょう。PATH=%RUBY_BIN%;%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin・以上でJSONのインストールからRails4.0のインストールまで進めます。installも完了します。sでWEBrickサーバーを起動すると、sqlite3が見つからないと言われてコケます!・Google先生に聞いてみると、Ruby2.1用のsqlite3のgemがサイト側で準備されていないのが原因らしい。対策はこの覚書に書いてありました。・sqlite3のソースを入手してコンパイルなど準備をし、sqlite3のgemをuninstallしてから指示通りにインストールしたら動きました。--with-sqlite3-lib=C:\Ruby210\sqlite3080300・scaffoldでユーザーページを作って、db:migrateも完了。ユーザーページにアクセスしてユーザー登録も出来ました。1.3.8となって、動かなくなります!・対策:C:\Ruby210\lib\ruby\gems\2.1.0\gems\sqlite3-1.3.8-x86-mingw32\lib\sqlite3\2.1\フォルダーを作り、ここにC:\Ruby210\lib\ruby\gems\2.1.0\gems\sqlite3-1.3.8\lib\sqlite3\sqlite3_native.soをコピーします。updateしてもOKです。・ここまで動いているとなれば、今回のビルドはまず成功と言って良いのかと思われます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。