私はcygwinを使っていますが、そもそも導入したのはプログラミングとは全く関係のないことで必要に迫られたためでした。たしかFontForgeで何かいじるためだったような気がします。それをきっかけに専らGCCを使うためにCygwinを導入しています。

ところで Cygwinに入っているGCCのバージョンは3.3.4です。一方GCCの最新版は4.1.1です。以前これを導入しようとしてダウンロードしたものの、放置したままでした。

ところが今回GCC 4.1.1をCygwinでビルドできたという話を見付けた(※)ので、やってみました。

../configure --prefix=/usr/local/gcc-4.1.1 --enable-threads=win32 --with-cpu=i686 --with-arch=i686 --with-tune=i686 --enable-languages=c,c++

make

make install

何もエラー無く完了しました。特に罠も無く率直にやれば良かったようです。パスを通してやるとgcc -vで確かに4.1.1になっていることがわかります。Hello, worldもうまく動きました。

1
2
3
4
5
#include <iostream>
int main()
{
    std::cout << "hello, world" << std::endl;
}

折角なので、CygwinのGCCに対してgcc -vした結果と比べ、また自分のCPUを指定してもう1度やり直してみました。どうせ放置しておけば勝手に出来上がるのですから、大して面倒なことはありません。

../configure --enable-threads=posix --enable-languages=c,c++ --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-sjlj-exceptions --enable-hash-synchronization --with-cpu=prescott --with-arch=prescott --with-tune=prescott

make CFLAGS=-O3 LIBCFLAGS=-O3 LIBCXXFLAGS=-O3 STAGE1_CFLAGS=-O3 BOOT_CFLAGS=-O3

make install

これも問題なく動いているようです。<windows.h>をインクルードしてMessageBox関数を使うこともできました。sizeof (wchar_t)は2、sizeof (long double)は12でした。うまいこと計らってくれているようです。

1つ気になることと言えば、Cygwin付属のgccと違い、これはCygwin上でしか使えないことです。オブジェクトファイルの出力を/cygdriveで始まるCygwin流の絶対パス指定で行っているためのようです。コマンドプロンプト上でビルドすれば解決するでしょうか。

スポンサード リンク

この記事のカテゴリ

  • ⇒ GCC 4.1.1
  • ⇒ GCC 4.1.1