C 言語のコンパイラのない環境では scrubyt が使えない

rubygems で scrubyt をインストールしてみて使ってみようとしたけれど、以下のエラーが発生して動かなかった。

D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:246:in `activate': can't activate RubyInline (= 3.6.3), already activated RubyInline-3.6.4] (Gem::Exception)
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:264:in `activate'
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:263:in `each'
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:263:in `activate'
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from exp_scrubyt.rb:2


ソースコードはというと、これだけ。そう、処理は特に何もなく require しているだけ。

 require 'rubygems'
 require 'scrubyt'

エラーメッセージはバージョンうんぬんといっているので、バージョンを指定をして、再実行。

 require 'rubygems'
 require_gem 'RubyInline', '= 3.6.3'
 require 'scrubyt'

すると、次はこんなエラーメッセージが。

D:/home/opt/ruby/lib/ruby/gems/1.8/gems/RubyInline-3.6.3/lib/inline.rb:386:in ``': No such file or directory - cl -nologo -LD   -MD -Zi -O2b2xg- -G6 -I D:/home/opt/ruby/lib/ruby/1.8/i386-mswin32 -I D:/home/opt/ruby/include -o "D:\home/.ruby_inline/Inline_ParseTree_2c97.so" "D:/home/.ruby_inline/Inline_ParseTree_2c97.c"  -link /LIBPATH:"D:/home/opt/ruby/lib" /DEFAULTLIB:"msvcrt-ruby18.lib" /INCREMENTAL:no /EXPORT:Init_Inline_ParseTree_2c97 (Errno::ENOENT)
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/RubyInline-3.6.3/lib/inline.rb:386:in `build'
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/RubyInline-3.6.3/lib/inline.rb:660:in `inline'
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/ParseTreeReloaded-0.0.1/lib/parse_tree_reloaded.rb:21
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from D:/home/opt/ruby/lib/ruby/gems/1.8/gems/scrubyt-0.3.4/lib/scrubyt.rb:12
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
        from D:/home/opt/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
        from exp_scrubyt.rb:3

C 言語のソースコードコンパイルしようとしてエラーがでている。
だけれども、そんなものはこの PC には入っていない。
先日までインストールしていたけれど、この PC では使わないからって削除してしまったし。


ParseTreeReloaded が RubyInline に依存しているのはわかるけれど、コンパイラがないからってだけで動かないのもどうかな。前にインストールしていた何かが残っていて悪さをしているかもしれないけれど。scrubyt を使うにはまだまだ先が長そう。


RubyInline がどのコンパイラを使うかは RUBY_PLATFORM や Config::CONFIG['LDSHARED'] 変数などから判断しているようなので、rubyruby のビルドに使ったコンパイラをインストールすれば解決する、かも。

  • 環境

scrubyt (0.3.4)
RubyInline (3.6.4, 3.6.3)
ParseTree (1.7.1)
ruby 1.8.5 (2006-11-02) [i386-mswin32]