x64-mswin64版Ruby 1.9.3をビルドした
2012-07-03追記: NokogiriのGitHubのURLが変更されたことへの追従。https://github.com/tenderlove/nokogiri → https://github.com/sparklemotion/nokogiri
以前から何度も玉砕している、x64-mswin64版Ruby 1.9.x(今回は1.9.3-p125)のビルドに成功したので、やったことをメモっておく。
環境はこんな感じ:
使用するソフトウェアはこんな感じ:
- libiconv-1.11 (artonさんのASRのページから入手)
- libxml2-2.7.8
- libxslt-1.1.26
- openssl-1.0.0g
- readline-4.3-2 (artonさんのASRのページから入手)
- yaml-0.1.4 (libyaml)
- zlib-1.2.5 (artonさんのASRのページから入手)
目標:
資料:
- artonさんのRuby環境構築講座Windows編 (Ruby環境構築講座 Windows編 - 達人出版会で買えるよ)
- その他ググッた結果。
Visual C++ 2010 Express
正直64bitの開発環境を用意するところが一番時間がかかった。
などを踏まえてインストールしていったら最後のCompiler Updateができない(Windows SDKを見つけられない)とかいわれてVCのインストールからやり直したりした。
以下ライブラリやRubyのビルドの際は、vcvars32.batやvsvars32.batに相当するもの(C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd)を実行することで64bit開発環境のための設定を行えた。
関連ライブラリのインストール
libiconv、readline、zlibはRuby環境構築講座Windows編の記述通りに進めた。
libyamlはプラットフォームにx64を加えて、かつWindows SDK 7.1を使用するように設定を変更した上でビルドした。
- How to: Configure Visual C++ Projects to Target 64-Bit, x64 Platforms | Microsoft Docs
- Visual C++ 2010 Expressで64bitコンパイル - torutkのブログ
OpenSSLはVC-WIN64Aでビルドした。
libxml2とlibxsltはのちほどNokogiriをインストールするために必要なもの。win32と同じビルド方法が使えた。
Rubyのインストール
都合によりRuby環境構築講座Windows編での方法と異なりインストール先のbinをPATHに加えずに進めたため、configureに--with-opt-dirを指定して関連ライブラリの検出を行えるようにした。ちなみに--prefixで指定するパスはバックスラッシュ(半角円マーク)区切りだが、--with-opt-dirで指定するパスはスラッシュ区切りにしないと上手くいかないことが過去にあったので、今回もそうした。
また、--platform=x64-mswin64を付けた(これを付けずに何度かビルドして泣きそうになった)。http://yanmo.info/?p=85
> win32\configure.bat --prefix=D:\private\tools\ruby-1.9.3-p125 --target=x64-mswin64 --with-opt-dir=D:/private/tools/ruby-1.9.3-p125
あとはwin32と同様にコンパイルとインストールを行えば良い。
ruby console的なものを用意する
インストールしたRubyのbinをPATHに追加して、かつVC 64bitの設定も行ったあとDOS窓を開きっぱなしにするため、二段構えのBATファイルを用意する。
REM ruby_console.bat @ECHO OFF CMD /k %~dp0\ruby_console_start.bat
REM ruby_console_start.bat @ECHO OFF PATH=%~dp0bin;%PATH% "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd"
Rubyのインストール先のフォルダにこの2つのBATファイルを置いて、一つ目のBATファイルを実行する。
Nokogiriのインストール
いくつかの理由によりnative buildが失敗するので、修正したgemファイルを作成してからgem installした。修正内容はこの記事を書く前にpull requestしておいたら、この記事を書いている最中にすでに取り込まれててビビった。Fix to build for x64-mswin64 by iwadon · Pull Request #629 · sparklemotion/nokogiri · GitHub