monthly gimite

試験運用中。

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から怒られている宣言を削除すればいいようです。

別のやり方も発見しました。試してないですが、こっちでもいいかも。

*1:たぶんmingwのmakeを使うなら、この書き換えは不要。