少し前にCygwinを更新した時の事だ。
mingw64と名の付く物が出ている事を確認した。
(Twitterでの9/14 17:40:42の発言)

この時、x86_64とあったので64bitOSのみなのだろうと
思っていたのだが・・・ここに見落としがあった。
同時にi686-w64-mingw32-gccも入れていた事に。
これなら32bitOS上で使える。

従来ならmingwで物を作る場合、
mingw単独のコンパイラを用意するか、
CygwinのGCC 3系で-mno-cygwinオプションを付けて
コンパイルするといったところだろうか。
現行でCygwinのGCC 4系ではこのオプションが
使えない(その件を書いた記事)。
今回の事は、それの打開策となるだろう。

簡単なCソースをコンパイルしてみて
動作する事を確認した。
cygcheckで実行ファイルを見ても、
cygwin1.dllの干渉は受けていない。

次に幾らか大きな物をやってみる。
先頃調べたら、既にやった方がいたのを確認したが、
自分もRuby 1.9.2のbuildをこれでやってみる。

configureのオプションは、特に目立った物は付けない。
prefixと明示的なGCCのコンパイラ指定のみだ。
./configure --prefix=(導入先) CC=i686-w64-mingw32-gcc
ちなみに先に試した方の情報を見たと書いたが、
その方の場合は、--target=mingw32というように
指定する事柄を増やしていた。

tkの部分でちょっと引っかかっているように思えるが、
それを除けば、build出来ているようだ。
次にmake checkをして確認をした。
前半(make test コマンドと同じ)は、all Passだった。
後半(make test-all コマンドと同じ)は、
幾つかF、E、Sが出ている。なんやら途中で
止まったぽいので強制終了させた。
test_io.rb の部分もmake check時に加えて
make testを2度やったが、計3度ともFは出なかった。

出来上がった物のバージョンは、
ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-mingw32]

導入先を/opt/ruby192mgとしていたが、
make installした時にそこに出ていない・・・
どこだ・・・?、と見たらCygwinフォルダ以下でなく、
外のドライブ直下にopt/ruby192mgが出来ていた。
これは注意するところかも。
gemを導入しようと思ったらzlib絡みのエラーが出た。
これは、make test-allの部分で出たzlibの
メッセージと関連ありそうだ。

かなり前にgcc 3の-mno-cygwin付をやった事があるが
あの時もzlibの部分で手間が掛かった記憶がある。
cygcheckで確認したが、出来たバイナリについては、
ちゃんとcygwin1.dllに依存していない物になっていた。

ひとまずmingwの方はここまでとしておく。
ある意味、これは番外編的な感じかな。
今回の件は、実のことを言えば、前記事
ライブラリ問題の調べをしていて気付いた。
結局そっちは、まだ解決出来てないんだがね・・・。