Ruby: Nmatrix gem がWindowsでインストールできない
Rubyで行列演算をやろうと探していたら、Nmatrixがいいとの情報が。
Windowsでgemをインストールしてみようとしたら、エラーが出やがる。
c:\>gem install nmatrix
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing nmatrix:
ERROR: Failed to build gem native extension.
C:/Ruby21-x64/bin/ruby.exe extconf.rb
指定されたパスが見つかりません。
指定されたパスが見つかりません。
指定されたパスが見つかりません。
Exception `RuntimeError' at extconf.rb:131 - unable to determine g++ version (ma
tch to get version was nil)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby21-x64/bin/ruby
extconf.rb:131:in `gplusplus_version': unable to determine g++ version (match to get version was nil) (RuntimeError)
from extconf.rb:141:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/nmatrix-0.1.0 for inspection.
Results logged to C:/Ruby21-x64/lib/ruby/gems/2.1.0/extensions/x64-mingw32/2.1.0/nmatrix-0.1.0/gem_make.out
どうもNmatrixのextconf.rbでのgplusplus_versionで失敗しているもよう。
def gplusplus_version cxxvar = proc { |n| `#{CONFIG['CXX']} -E -dM - </dev/null | grep #{n}`.chomp.split(' ')[2] } major = cxxvar.call('__GNUC__') minor = cxxvar.call('__GNUC_MINOR__') patch = cxxvar.call('__GNUC_PATCHLEVEL__') raise("unable to determine g++ version (match to get version was nil)") if major.nil? || minor.nil? || patch.nil? "#{major}.#{minor}.#{patch}" end
上記のcxxvarの箇所でのエラーとなる。CONFIG[‘CXX’]はDevKit内のMingw の g++ となっていて存在しているのだが、上の「指定されたパスが見つかりません。」と出ているのは、その後ろの「</dev/null」のリダイレクト箇所がWindowsで存在しないファイルとしてエラーになってしまっていた。
gemファイルを書き変えたら実行できるのかしら…。
cxxvar = proc { |n| `echo "" | #{CONFIG['CXX']} -E -dM - | grep #{n}`.chomp.split(' ')[2] }
リンク
- SciRuby
- SciRuby/nmatrix
- Installation · SciRuby/nmatrix Wiki
- (インストールガイドにはLinuxとOS X用の記述しかない…)
- SciRuby/nmatrix
- sciruby – Ruby-GSLのNMatrix版を各環境にインストール – Qiita
- 環境構築で時間を食われるのは非常につらい.
- やはり科学分野でRubyを広めるにはnarrayとnmatrixが統合される必要があると思います。
- Ruby で行列演算するなら NMatrix を使った方が 100 倍速い – Qiita
- Medfreak / 【SciRuby】NMatrixであそぶ
- 3階建ての2階角部屋 2nd : NMatrixを使って3D
||第2弾 プログラムを書き直しました。
- PythonとRubyだと、どっちが使えそうですか?Pythonだと、さすがNASAとか… – Yahoo!知恵袋
- Ruby科学データ処理ツールの開発 NArrayとPwrake
- なぜ科学計算にはPythonか?
- Rubyと機械学習の現状
[追記]
ライブラリとしてLAPACKが必要で、こちらはなんとかCmakeを使ってDevKitでのライブラリ生成できたのだが、さらにATLASのインストールも必要だった。まだ、途中だがCygwinかMinGWの環境が必要のようで、DevKitだけでは難しそう。
- LAPACK for Windows
- ATLAS Installation Guide 1
- Automatically Tuned Linear Algebra Soft. / Discussion / ATLAS on Windows:Installing ATLAS in a mixed cygwin/MinGW env
行列計算がしたいだけならGSLの方がいいのでは…
コメントありがとうございます!GSLも試してみます。