読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

Windowsでの「extconf.rb:104:in `makemakefiles': unhandled exception」対処

Ruby gem Windows MinGW

Windows で gem install しようとしたときに出てくるコレへの対処

エラー例

gem install knife-solo しようとしたときとか。

> gem install knife-solo
…
Fetching: coderay-1.1.0.gem (100%)
Successfully installed coderay-1.1.0
Fetching: pry-0.10.3.gem (100%)
Successfully installed pry-0.10.3
Fetching: libyajl2-1.2.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing knife-solo:
        ERROR: Failed to build gem native extension.

    C:/Ruby-2.2/bin/ruby.exe -r ./siteconf20151115-2044-1rd3y17.rb extconf.rb
creating Makefile
C:\Ruby-2.2\lib\ruby\gems\2.2.0\gems\libyajl2-1.2.0\ext\libyajl2
extconf.rb:104:in `makemakefiles': unhandled exception
        from extconf.rb:138:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby-2.2/lib/ruby/gems/2.2.0/gems/libyajl2-1.2.0 for inspection.
Results logged to C:/Ruby-2.2/lib/ruby/gems/2.2.0/extensions/x86-mswin32-100/2.2.0/libyajl2-1.2.0/gem_make.out

原因

結局いろいろ調べた結果、使ってる RubyMinGW がうまくマッチしていないことが問題っぽい。
Ruby が 32 ビットで MinGW が 64 ビットだったりとか、その逆だったりとか。
あと、Ruby は RubyInstaller 以外の手段(自前でビルドしたりとか RubyInstaller 以外のビルド版を使うとか)で導入していると MinGW とうまく噛み合わない。

とりあえず「extconf.rb:104:in `makemakefiles': unhandled exception」のようなエラーにハマったときには一旦 RubyMinGW をインストールし直してみるのが良いっぽい。

RubyMinGW のインストールし直し

Ruby

インストーラに従いインストール。環境変数 PATH はインストーラで設定するのが良い。

MinGW

C:\devkit に解凍。

設定

コマンドプロンプトを開き、以下を実行。

> cd C:\devkit
> ruby dk.rb init
> ruby dk.rb install

gem install リトライ

> gem install knife-solo
…
56 gems installed

成功。

});