search
LoginSignup
8

More than 3 years have passed since last update.

posted at

updated at

RubyをWindows上でVisual C++でビルドする 2016

あえて茨の道を行きたい人向けです。

Ruby

Rubyをソースコードからビルドする場合、特にtarballからではなくリポジトリから取得した場合にはbisonやsed、rubyといったUnixツールが必要です。個別に調達すると大変なので、たとえVisual C++でビルドするのだとしても、RubyInstaller 及びdevkitを取得すると一通り揃うので大変楽です。
なお、CRubyは現在Visual C++ 2015 (14) には対応していません。動くブランチはありますが、差分を見ればわかるとおり、人様に使って頂けるような物にはなり得ません。

環境変数

ビルド用の環境変数。なお、VS2013 x64 Native Tools コマンド プロンプトなどを用いてコンパイラ等の環境変数はあらかじめ設定しているものとします。

set PATH=%PATH%;C:\Ruby22-x64\bin;C:\Program Files (x86)\Git\bin
set TERM=xterm

OpenSSL

後述のLibreSSLでもいけます。
まずOpenSSL Downloadsから1.0.2dなどを取ってきます。devkitの付録のperlを使う場合、msysなためか外から来るパスが\になっているせいで、文字列に埋め込んだ際におかしくなるので以下の修正を当てます。(ActivePerlのperlだったら不要かもしれない)

--- ms\uplink-x86_64.pl.orig    2015-11-21 14:24:17 +0900
+++ ms\uplink-x86_64.pl 2015-11-21 14:25:02 +0900
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl

 $output=shift;
-$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=quotemeta $1;
 open OUT,"| \"$^X\" ${dir}../crypto/perlasm/x86_64-xlate.pl $output";
 *STDOUT=*OUT;
 push(@INC,"${dir}.");

あとは以下の通りにビルドします。

perl Configure VC-WIN64A no-asm --prefix=/Users/naruse/local/ruby
ms\do_win64a
nmake -f ms\ntdll.mak

なお、no-asmをつけないと、少なくともさっきのパス変換の修正が大量に必要になります。

目当てのバイナリはout32dll\libeay32.dllとout32dll\ssleay32.dllです。
これをrubyをビルドするフォルダと、インストール先のbinフォルダにコピーします。

LibreSSL

OpenSSLを用意した人は必要ありません。
LibreSSL Downloadに行き、libressl-2.2.4-windows.zipなどをダウンロードして解凍します。x64フォルダに入り、libcrypto-35.libとlibssl-35.libを、それぞれcrypto.libとssl.libにリネームします。また、libcrypto-35.dllとlibssl-35.dllをrubyをビルドするフォルダと、インストール先のbinフォルダにコピーします。

zlib

http://zlib.net/zlib128.zip をダウンロードし、解凍して、nmake -f win32/Makefile.mscしてできたzlib1.dllをrubyをビルドするフォルダと、インストール先のbinフォルダにコピー。

Ruby

以下の通りでビルド・インストールできます。(パスは適当に読み替えてください)

win32\configure.bat --disable-install-doc --with-openssl-include=/Users/naruse/local/libressl-2.2.4-windows/include --with-openssl-lib=/Users/naruse/local/libressl-2.2.4-windows/x64 --with-zlib-include=/Users/naruse/local/zlib-1.2.8 --with-zlib-lib=/Users/naruse/local/zlib-1.2.8
nmake install

追記

Visual C++ではなくmingwを使いたいときはGit for Windows SDKの話を読みましょう

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8