Ruby1.9のtrunkをmswin32(VS2005)でコンパイル、インストールする

Ruby1.9環境も揃いつつあるようなので、ここらで今までの経験値とVisual Studio 2005付属のコンパイラを使って、Ruby1.9のtrunkをコンパイルしてみることにした。

以下、忘れないように手順をメモ

今回はftp://ftp.ruby-lang.org/pub/ruby/snapshot.tar.gzより、3/5版のスナップショットを頂く。
取得したソースコードを適当なディレクトリに展開する。(e:\build_ruby1.9.2)

  • 2. Ruby自身をコンパイルする

1.8系同様の手順で良い。コマンドプロンプトを管理者権限で開き、以下の順で実行

>"%VS80COMNTOOLS%vsvars32.bat"
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
>e:
>cd e:\build_ruby1.9.2\win32
    
>nmake >nmake install
違うのは、1.9系からはインストール先ディレクトリの指定がnmake実行時のDESTDIRパラメタでは無く、configure.batの--prefixパラメタで指定するところ位。1.8のスナップショットとは違い、ビルドで不都合が出ることは一切無かった。ありがたい。
  • 3. ruby.exeのバージョンを確認する
ruby.exeが動くのを確認して、まずほっとする。
>e:
>cd e:\ruby1.9.2\bin
>ruby -v
ruby 1.9.2dev (2009-03-05 trunk 22783) [i386-mswin32_80]
  • 4. zlibをコンパイルする
拡張ライブラリィの内、まずはrubygemsの実行に必要なzlibをruby環境から使えるようにする 今回は(う)さんのページで紹介されている、Porting Libraries to Win32から、/win32/zlib-1.1.4-1-src.zipを取得して使うことにした。(e:\build_ruby1.9.2) 以下、手順(最初、この手順が全く解らなかった。プログラミングRuby 第2版 等を見てなんとか実行)
>"%VS80COMNTOOLS%vsvars32.bat"
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
>cd E:\build_ruby1.9.2\zlib-1.1.4-1\win32
>nmake
>...
>mt -manifest zlib.dll.manifest -outputresource:zlib.dll;2
Microsoft (R) Manifest Tool version 5.2.3790.2075
Copyright (c) Microsoft Corporation 2005.
All rights reserved.
zlibにはMakeFileが用意されているので、いきなりnmakeでもOK。ただし、出来たライブラリィ(zlib.dll)は手動でビルドが完了したruby.exeのある場所(e:\ruby1.9.2\bin)にコピーする。 なお、マニフェストが作成されている場合はmt.exeを使用して、手動でマニフェストをDLLに埋め込む必要がある。このコマンドも全く知らなかったので、MSDNでパラメタを確認した。 方法 マニフェストを C-C++ アプリケーションに埋め込む
  • 5. zlibの拡張ライブラリィを作成してruby環境にインストール
zlibを初めとする重要なrubyの拡張ライブラリィは、プラットホームに合わせたMakeFileを作成するためのスクリプトextconf.rbがrubyソースコードパッケージに付属しているので、このスクリプトを先ほどビルドが成功したruby.exeから動かしてMakeFileを作成し、nmakeでコンパイル、インストールする。
>"%VS80COMNTOOLS%vsvars32.bat"
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
>e:
>cd E:\build_ruby1.9.2\snapshot\ext\zlib
    
checking for deflateReset() in z.lib... no checking for deflateReset() in libz.lib... yes checking for zlib.h... yes checking for kind of operating system... Win32 creating Makefile >nmake Microsoft(R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. : 略 ライブラリ zlib-i386-mswin32_80.lib とオブジェクト zlib-i386-mswin32_80.exp を作成中 mt -nologo -manifest zlib.so.manifest -outputresource:zlib.so;2 >nmake install Microsoft(R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. install -c -p -m 0755 zlib.so e:\ruby1.9.2\lib\ruby\site_ruby\1.9.1\i386-msvcr80
重要なのはextconf.rb実行時のパラメタ"--with-zlib-include"及び"--with-zlib-lib"でzlibのincludeファイルとコンパイルで作成されたライブラリィの場所を指定すること。これを忘れるとMakeFileの作成に失敗する。
  • 6. 最終確認
rubygemsが動作することを確認する。
>gem list --local

ここまで来ればもう大丈夫だ。あとは必要なgemをインストールするだけ。 なお、1.8系でインストールされていた、他の拡張ライブラリィに関しては今回インストールを省いているが、必要に応じて同様にインストールできるはずだ。