Cygwinを弁護してみる

llvmrubyをCygwinコンパイルしています。READMEに「Windowsは良く知らないけど、動かす意味あるのかなー?でも、動くようにするのは楽しい時間かもね」って書いてあるとおり、なかなか難儀です。今、llvmコンパイル中(3回目)です。
Cygwinって変なところではまってコンパイルできないってありがちです。Rubinusとか、jemallocとか。procファイルシステムとかmmapとか出てくると手も足も出なくて泣く泣くあきらめるってことになります。WindowsUNIX系OSの両方が詳しい人なら、互換ルーチンを作っちゃうのかもしれないですが。
でも、実はCygwinを使うとすごく勉強になっているんじゃないかなと思うことがあります。Cygwinコンパイルにはまるのは、たいていOSの奥底の機能です(mmapやprocは基本だといわれると・・・、ううう、ごめんなさい)。そういうところはちょっとしたプログラムでは出てこないので、使うことも少ないし、大規模なプログラムでも使っているのはほんの一部です。そういうことで、あまりなじみの無い機能ですが、Cygwinではしっかり引っかかります。調べないと先に進まないので、調べます。ってことで強制的に勉強させるツールにはなっているわけです。覚えているかは別の話ですが・・・。その後、うまく解決できる場合もあれば、どうしようもない場合もあります。

そういうことで、Cygwinをつかってみてはいかがでしょうか?使う人が増えると情報が増えるので楽できそうです。って、前の段落と矛盾していますが。

追記
Cygwinでのコンパイル成功しました。blogにある「私はブドウが好き!」はちゃんと動いています。でも、test_ruby_vm.rb, test_basic.rbは失敗します。どうも、ライブラリで定義された関数が呼べないようです。dll関係かな?面倒そー

追記2
そういえば「私はブドウが好き!」(http://llvmruby.org/wordpress-llvmruby/?p=23)もprintfを使ってますね。じゃあなんだろう?