Windows環境で、gemでjsonをインストールしようとしたら、以下のエラーになった。
$ gem install json
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
c:/ruby/bin/ruby.exe extconf.rb install json
creating Makefile
nmake
'nmake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/json-1.1.2 for
inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/json-1.1.2/ext/json/ext/parser/
gem_make.out
Visual Studio 2005をインストールしているので、
"C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
をコマンドプロンプトから実行して環境変数を設定。
※このvsvars32.batはとても便利。ILDasmなどいろいろなツールへのパスを設定してくれる。
再び gem install jsonすると、今度は以下のエラー。
$ gem install json
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
c:/ruby/bin/ruby.exe extconf.rb install json
creating Makefile
nmake
Microsoft(R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.
c:\ruby\bin\ruby -e "puts 'EXPORTS', 'Init_parser'" > parser-i386-mswin
32.def
cl -nologo -I. -Ic:/ruby/lib/ruby/1.8/i386-mswin32 -Ic:/ruby/lib/ruby/1.
8/i386-mswin32 -I. -MD -Zi -O2b2xg- -G6 -c -Tcparser.c
cl : コマンド ライン warning D9035 : オプション 'Og-' の使用は現在推奨されていま
せん。今後のバージョンからは削除されます。
cl : コマンド ライン warning D9002 : 不明なオプション '-G6' を無視します
parser.c
c:\ruby\lib\ruby\1.8\i386-mswin32\config.h(2) : fatal error C1189: #error : MSC
version unmatch
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\c
l.EXE"' :
Stop.
Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/json-1.1.2 for
inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/json-1.1.2/ext/json/ext/parser/
gem_make.out
fatal error が発生しているc:\ruby\lib\ruby\1.8\i386-mswin32\config.hを修正。
ぼくの環境のcl.exeのバージョンは、14.00.50727.762なので、
#if _MSC_VER != 1200
#error MSC version unmatch
#endif
を、
#if _MSC_VER < 1200
#error MSC version unmatch
#endif
に修正すると、無事インストール完了!
参考: 2008-02-03 - mallowlabsの備忘録