1. MinGW環境について
GCCを自前でビルドしようという方は、MinGW環境もすでにあるという前提で、細かい説明は省略します。
MinGW環境については、こちらもお読みいただくと参考になると思います。
MinGW環境のアップデート (2011/04/12)
MSYS環境のアップデート (2011/04/12)
追加で、FlexとTexinfoをインストールします。
インストール済みの場合は、あらためてインストールする必要はありません。
以下のファイルを、
C:\msys\1.0\
に、解凍します。
2012/01/10 追記
MinGWとMSYSを mingw-get-inst-20111118.exe などでインストールした場合、MSYSの場所は、
C:\MinGW\msys\1.0\
になっているかもしれません。
・flex-2.5.35-2
http://sourceforge.net/projects/mingw/files/MSYS/Extension/flex/flex-2.5.35-2/
flex-2.5.35-2-msys-1.0.13-bin.tar.lzma
・texinfo-4.13a-2
http://sourceforge.net/projects/mingw/files/MSYS/Base/texinfo/texinfo-4.13a-2/
texinfo-4.13a-2-msys-1.0.13-bin.tar.lzma
・regex-1.20090805-2
http://sourceforge.net/projects/mingw/files/MSYS/Base/regex/regex-1.20090805-2/
libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma
2012/03/23 追記
Git for Windowsがインストール済みで、MSYSから使用できるようにパスを通していると、GCCのconfigureの時にGit for Windowsのbisonが応答しなくなって、固まる場合があります。
その場合は、MSYSにbisonをインストールしてください。
・bison-2.4.2-1
http://sourceforge.net/projects/mingw/files/MSYS/Extension/bison/bison-2.4.2-1/
bison-2.4.2-1-msys-1.0.13-bin.tar.lzma
2. ライブラリのインストール
以下のライブラリは、あらかじめインストールしておいてください。
最新版は、各ライブラリのページで確認してください。
pthreads-w32 release 2.9.0
zlib-1.2.6
libiconv-1.13.1
gmp-5.0.4
mpfr-3.1.0
mpc-0.9
ppl-0.12
cloog-0.17.0
必要なライブラリなどについては、こちらも参照してください。
Prerequisites for GCC
http://gcc.gnu.org/install/prerequisites.html
3. ソースコードの準備
GCC4.6のソースコードは、このページから適当なサーバを選んでダウンロードしてください。
http://gcc.gnu.org/mirrors.html
この辺りから、
ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.6.3/
gcc-core-4.6.3.tar.bz2
gcc-g++-4.6.3.tar.bz2
gcc-objc-4.6.3.tar.bz2
を、ダウンロードします。
ada、java、fortranは、あまり使用しないので省略します。
ファイルを適当な場所に保存して、解凍します。
$ tar xjf gcc-core-4.6.3.tar.bz2
$ tar xjf gcc-g++-4.6.3.tar.bz2
$ tar xjf gcc-objc-4.6.3.tar.bz2
次に、
libgomp-configure.diff
make-temp-fileパッチ
make-temp-file.diff
を適用します。
gcc-4.5.0用のパッチですが、そのまま使用します。
2011/04/22 追記
libgomp/configureのパッチは不要でしたので、削除しました。
2012/01/11 追記
cloog-0.17.0に対応するためのパッチを追加しました。
gcc-4.7のソースを参考にしました。
gcc-4.6-cloog-0.17.diff
$ cd gcc-4.6.3
$ patch -p1 < ../make-temp-file.diff
$ patch -p1 < ../gcc-4.6-cloog-0.17.diff
4. GCCのビルド
ここまで準備ができましたら、GCCをビルドします。
ソースコードとビルド用のディレクトリは、分けておいた方がよいと思います。
私の場合は、こんな感じにしています。
/usr/local/src/gcc-4.6.3/
/usr/local/src/build/
(/usr/local/src/ は、Windows上では、C:\msys\1.0\local\src\ です。)
ビルド用のディレクトリで、configureを実行します。
2012/01/11 追記
cloog-0.17.0にすると、configureでcloogを見つけられず、
checking for version 0.16.1 of CLooG... no
となってしまうので、「--disable-cloog-version-check」を追加しました。
ついでに、「--enable-fully-dynamic-string」を追加しました。
$ ../gcc-4.6.3/configure --prefix=/mingw --build=mingw32 --with-arch=i686 --with-tune=generic --enable-threads --enable-languages=c,c++,objc,obj-c++ --enable-libgomp --disable-sjlj-exceptions --with-dwarf2 --enable-version-specific-runtime-libs --disable-win32-registry --disable-werror --disable-nls --enable-cloog-backend=isl --disable-cloog-version-check --with-host-libstdcxx=-lstdc++ --enable-lto --with-system-zlib --enable-libstdcxx-debug --enable-cxx-flags='-fno-function-sections -fno-data-sections' --enable-fully-dynamic-string --disable-libstdcxx-pch --disable-bootstrap
gcc-4.6.0から新たに、
--enable-cloog-backend=isl
というオプションを追加しています。
configureオプションについては、こちらを参照してください。
Installing GCC: Configuration
http://gcc.gnu.org/install/configure.html
--with-arch=i686 --with-tune=generic
のところは、-marchと-mtuneのデフォルト値が
-march=i686 -mtune=generic
になるので、自分の環境に合わせて、
--with-arch=core2 --with-tune=core2
とか、
--with-arch=athlon64 --with-tune=athlon64
などとすると良いかもしれません。
自分の環境でしか使用しない場合は、
--with-arch=native --with-tune=native
でも良いかもしれません。
--with-arch、--with-tuneオプション無しの場合は、--build=mingw32 が指定されていると、
-march=i386 -mtune=i386
がデフォルト値になります。
configureが終了したら、makeします。
$ make CFLAGS="-O2 -D__USE_MINGW_ACCESS" CFLAGS_FOR_TARGET="-O2 -D__USE_MINGW_ACCESS" CXXFLAGS="-mthreads -O2" CXXFLAGS_FOR_TARGET="-mthreads -O2" LDFLAGS="-s" 2>err.log 1>out.log
そのままmakeだけすると、デバッグシンボル入りの巨大なバイナリになってしまうため、フラグを変えています。
メッセージをログに保存して、何か問題があった時に参照できるようにしています。
5. GCCのインストール
そのままmake installするのはちょっと危険です。
私の場合、TDMさんだったか誰かのインストールスクリプトを参考に、以下のように、実行環境とは別のディレクトリにインストールしています。
$ make DESTDIR=/develop/sandpit/dw2 install
MSYSから見ると、
/develop/sandpit/dw2/mingw/
実際のディレクトリは、
C:\msys\1.0\develop\sandpit\dw2\mingw\
に、インストールされます。
あとは、ディレクトリ構造を変えずに、そのままMinGW環境に上書きすれば完了です。
configureからmake installまでの流れは、けっこう時間がかかりますので、私はスクリプトで流しています。
参考までに、こちらに置いておきます。
2012/03/02 追記
ビルドス用のスクリプトを更新しました。
gcc-4.6.3-build-dw2-generic.sh
【補足】
この手順では、最初はgcc-4.5.2でgcc-4.6.2をビルドしています。
一通りビルドし終わった後、出来上がったgcc-4.6.2で、もう一度個別ライブラリからgcc-4.6.2本体までビルドすれば完璧です。
--disable-bootstrap を削除すれば、stage1〜stage3まで繰り返して、仮のコンパイラで本体をコンパイルしてくれるのですが、gcc-4.5.2で試した時はものすごく時間がかかったのと、HDDの空き容量に余裕がないとできないので、gcc-4.6.2では試していません。
【更新履歴】を見る


