Cygwinでmswin32版のRuby拡張ライブラリをコンパイルする方法
まずmingw版Rubyバイナリをダウンロードして、てきとうな場所に解凍します。ちょっとバージョンが古いですが、まあ問題ないでしょう。ここでは
c:\ruby-mingw32\ bin\ruby.exe doc\ :
という感じで置いたとします。
次に、Cygwinのシェルを起動し、コンパイルしたいライブラリがあるディレクトリにcdして
$ /cygdrive/c/ruby-mingw32/bin/ruby extconf.rb
でMakefileを作ります。Makefileには何箇所か c: と書いてあるので、これを /cygdrive/c に書き換えます。*1更にC++のコンパイルをする場合は
CXX = g++ -mno-cygwin
を追記する必要があります。
あとは普通に
$ make
でmswin32版(というかmingw版ですが、互換性があるのでOK)の拡張ライブラリの出来上がりです。
注: mingwのヘッダファイルとRubyのwin32/win32.hで関数や構造体の多重宣言があって、エラーになることがあります。その場合はRubyのwin32/win32.hから怒られている宣言を削除すればいいようです。
別のやり方も発見しました。試してないですが、こっちでもいいかも。