2008/09/23
Rubyの拡張モジュールをインストールしようとまず「ruby extconf.rb」でMakefileを作ろうとしたところ、
can't find header files for ruby.
というエラーになりました(Rubyのバージョンは1.8.6)。
調べてみると、extconf.rbの先頭でrequireするmkmfライブラリの中に以下のような箇所があり、
117 if not $extmk and File.exist?(Config::CONFIG["archdir"] + "/ruby.h") 118 $hdrdir = $topdir = Config::CONFIG["archdir"] 119 elsif File.exist?(($top_srcdir ||= topdir) + "/ruby.h") and 120 File.exist?(($topdir ||= Config::CONFIG["topdir"]) + "/config.h") 121 $hdrdir = $top_srcdir 122 else 123 abort "can't find header files for ruby." 124 end
ruby.hがないとこのエラーになることが分かりました。
ruby.hは僕が使っているFedora 9ではruby-develパッケージに含まれるので、
% sudo yum install ruby-devel
にて同パッケージをインストールしたところ、エラーが出なくなりました。
尚、ruby.hは/usr/lib/ruby/1.8/i386-linux/ruby.hに配置されます。
今まで1年以上Rubyを使ってきましたが、同様の方法で拡張モジュールをインストールしたことがなかったようです。