2008-08-17
■[Ruby] Microsoft Visual Studio 2008 で ruby-1.8.6-p287 をコンパイル
Ruby を使うにあたって今まではバイナリーをインストールしていましたが、
今回 Visual Studio 2008 でコンパイル、インストールしてみました。
ext/zlib, ext/openssl, rubygems も入れてみました。
自分の備忘のためと、誰かの参考になればとにインストール時のメモを書いておきます。
今回インストールした環境は以下のとおりです。
- Windows Vista Home Premium (Service Pack 1) 32bit
- Visual Studio 2008 Standard Edition
- ダウンロードしたファイルの解凍には LhaForge *1 を使用しました。
- 展開したソースファイルは C:\src に置きました。
- ruby は C:\ruby にインストールしました。
ポイントは5つあります。
- 環境変数等を設定するため、コマンドプロンプトは VisualStudio をインストールすると作成される Visual Studio 2008 コマンド プロンプトから開いた。*2
- そのまま、コンパイルインストールすると msvcr90-ruby18.dll となってしまい例えば vim から呼び出すときに都合がわるいので変更しました。
- zlib の make 時にマニュフェストを埋め込まないので、手動で埋め込みました。
- openssl のコンパイルに perl が必要だったので ActivePerl をインストールしました。
- ext/openssl の作成時にコンパイルエラーが出るので、CFLAGS を調整しました。
Ruby 本体のインストール
- Ruby 公式サイト http://www.ruby-lang.org/ja/ から 1.8系の最新リリース ruby-1.8.6-p287.tar.gz をダウンロードしました。
- ソースを解凍して c:\src\ruby-1.8.6-p287\ 以下に配置しました。
- c:\src\ruby-1.8.6-p287\win32\README.win32 を読みました。
- Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\ruby-1.8.6-p287 C:\src\ruby-1.8.6-p287>win32\configure.bat
- エディタで Makefile の次の部分を修正しました。
前 # RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR) 後 RUBY_SO_NAME = msvcrt-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
- 再びコマンドプロンプトに戻って次のようにしました。
C:\src\ruby-1.8.6-p287>nmake C:\src\ruby-1.8.6-p287>nmake test C:\src\ruby-1.8.6-p287>nmake DESTDIR=c:\ruby install
次の作業を行なる前にシステムの環境変数 Path に C:\ruby\bin を追加し、一旦コマンドプロンプトを閉じました。
ext/zlib
- zlib 公式サイト zlib http://zlib.net/ より zlib-1.2.3.tar.gz をダウンロードしました。
- C:\src\zlib-1.2.3 以下にソースを展開しました。
- 再び Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\zlib-1.2.3 C:\src\zlib-1.2.3>nmake -f win32\Makefile.msc C:\src\zlib-1.2.3>mt -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2 C:\src\zlib-1.2.3>copy zlib1.dll c:\ruby\bin C:\src\zlib-1.2.3>cd \src\ruby-1.8.6-p287\ext\zlib C:\src\ruby-1.8.6-p287\ext\zlib>ruby extconf.rb --with-zlib-include=c:\src\zlib-1.2.3 --with-zlib-lib=c:\src\zlib-1.2.3 C:\src\ruby-1.8.6-p287\ext\zlib>nmake C:\src\ruby-1.8.6-p287\ext\zlib>nmake install
マニュフェストを埋め込む件 http://kazuwe.tdiary.net/20080726.html が参考になりました。ありがとうございます。
ActivePerl
openssl をコンパイルするためには、perl が必要とのことで、ActivePerl をインストールしました。
ページ http://www.activestate.com/Products/activeperl/index.mhtml から Get ActivePerl のリンクをたどり
activeperl 5.10.0.1003 for Windows (x86) MSI をダウンロードしてインストールしました。
ext/openssl
- http://www.openssl.org/source/ より openssl-0.9.8h.tar.gz をダウンロードしました。
- C:\src\openssl-0.9.8h に展開したソースを置きました。
- Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\openssl-0.9.8h C:\src\openssl-0.9.8h>perl Configure VC-WIN32 --prefix=c:/ruby C:\src\openssl-0.9.8h>ms\do_ms.bat C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak test C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak install C:\src\openssl-0.9.8h>cd \src\ruby-1.8.6-p287\ext\openssl C:\src\ruby-1.8.6-p287\ext\openssl>ruby extconf.rb --with-openssl-include=c:\ruby\include --with-openssl-lib=c:\ruby\lib
このままだとコンパイルが通らないので、Makefile を書き換えました。
前 CFLAGS = -MD -O2b2xty- 後 CFLAGS = -MD -DWIN32_LEAN_AND_MEAN -O2b2xty-
以下のように make してインストールしました。
C:\src\ruby-1.8.6-p287\ext\openssl>nmake C:\src\ruby-1.8.6-p287\ext\openssl>nmake install
rubygems
- http://rubyforge.org/frs/?group_id=126 より rubygems-1.2.0.tgz をダウンロードしました。
- C:\src\rubygems に展開したソースを配置しました。
- Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
- C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\rubygems-1.2.0 - C:\src\rubygems-1.2.0>ruby setup.rb
追記
一応、gem install --remote twittre4r とかで twitter4r をインストールして動作していますが、何か間違いや不具合があったら教えてください。
openssl のアセンブラソースのコンパイルには失敗しました。一旦コンパイルに失敗すると nmake clean してもクリアされない情報があるようで、展開したてのソースからやりなおさないと成功しませんでした。
*1: http://claybird.hp.infoseek.co.jp/garage/lhaforge/index.html
*2:普通にコマンドプロンプロを起動した場合は C:\Program Files\Microsoft Visual Studio 9.0\VC\で vcvarsall.bat x86 を実行する。
クリック: 14回


