Windows Vista で MinGW

Windows Vista で開発環境を整備。
– MinGW-5.1.3 (with g++ and MinGW make)
– MSYS-1.0.10
をいれた。MSYS はもっと新しい snapshot が出ているのだけど、ソースしかないのでびびって入れられなかった(笑)。
で、gcc + g++ はいつもどおり自分で build する。/mingw/include を /usr/include にリンクしないとだめなのは昔と同じだが、cc1 の入っているところ (/mingw/libexec/gcc/mingw32/3.4.5) にも path を通さないと、gcc が動かなかった…
% ln -s /mingw/include /usr/include
% export PATH=$PATH:/mingw/libexec/gcc/mingw32/3.4.5
% ../gcc-4.0.4/configure –with-gcc –with-gnu-ld –with-gnu-as –host=mingw32
–target=mingw32 –prefix=/gcc4.0.4 –enable-threads –disable-nls –enable-lan
guages=c,c++ –disable-win32-registry –disable-shared –enable-sjls-exceptions
% make
で、順調にいくかと思ったのだが、途中で生成される genmodes というプログラムの挙動がおかしくて、ディスクを埋め尽くすほど巨大なヘッダファイルをいくつも作ってしまい、途中で build を中止するはめに。調べてみると、genconf.c では printf() の format string に %n が使われており、これは printf で出力する文字が何桁あるか調べるためのものだ (しらなかった)。しかし、最近はセキュリティ上のリスクがあるので使わないようにしよう、ということで Vista から使えなくなった模様。この場合対応する変数は更新されないから、おかしな値になって、巨大なファイルができてしまうようだ。幸いにして、genmodes.c で %n が使われているところは printf の返り値を使って書き直せるので、なんとかなる感じ。ちなみに2箇所だ。
MSYS があれば MinGW の中で生きていけるとはいえ、Cygwin のほうが何かと便利なので、明日は Cygwin で動く MinGW の build 環境を作ってみようと思う。

コメントを残す