1. MinGW環境について
GCCを自前でビルドしようという方は、MinGW環境もすでにあるという前提で、細かい説明は省略します。
MinGW環境については、こちらもお読みいただくと参考になると思います。
MinGW環境のアップデート (2011/04/12)
MSYS環境のアップデート (2011/04/12)
追加で、FlexとTexinfoをインストールします。
以下のファイルを、
C:\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.5
libiconv-1.13.1
gmp-5.0.1
mpfr-3.0.0
mpc-0.8.2
polylib-5.22.5
ppl-0.11.1
cloog-ppl-0.15.9
必要なライブラリなどについては、こちらも参照してください。
Prerequisites for GCC
http://gcc.gnu.org/install/prerequisites.html
3. ソースコードの準備
GCC4.5のソースコードは、このページから適当なサーバを選んでダウンロードしてください。
http://gcc.gnu.org/mirrors.html
この辺りから、
ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.5.3/
gcc-core-4.5.3.tar.bz2
gcc-g++-4.5.3.tar.bz2
gcc-objc-4.5.3.tar.bz2
を、ダウンロードします。
ada、java、fortranは、あまり使用しないので省略します。
ファイルを適当な場所に保存して、解凍します。
$ tar xjf gcc-core-4.5.3.tar.bz2
$ tar xjf gcc-g++-4.5.3.tar.bz2
$ tar xjf gcc-objc-4.5.3.tar.bz2
次に、
libgomp-pthreads.diff
make-temp-fileパッチ
make-temp-file.diff
を適用します。
2011/04/22 追記
libgomp/configureのパッチは不要でしたので、削除しました。
ppl-0.11をインストールしていると、configureのバージョンチェックで見つけられず、
checking for version 0.10 of PPL... no
となるのを修正するパッチを追加しました。
configure-ppl-version.diff
2011/05/10 追記
gcc-4.5.3で、ppl-0.11用のパッチは不要になりました。
$ cd gcc-4.5.3
$ patch -p1 < ../make-temp-file.diff
4. GCCのビルド
ここまで準備ができましたら、GCCをビルドします。
ソースコードとビルド用のディレクトリは、分けておいた方がよいと思います。
私の場合は、こんな感じにしています。
/usr/local/src/gcc-4.5.3/
/usr/local/src/build/
(/usr/local/src/ は、Windows上では、C:\msys\1.0\local\src\ です。)
ビルド用のディレクトリで、configureを実行します。
2012/01/11 追記
configureオプションに「--enable-fully-dynamic-string」を追加しました。
$ ../gcc-4.5.3/configure --prefix=/mingw --build=mingw32 --with-arch=i686 --with-tune=generic --enable-languages=c,c++,objc,obj-c++ --enable-libgomp --disable-werror --enable-threads --disable-nls --disable-win32-registry --disable-sjlj-exceptions --with-dwarf2 --enable-lto --with-system-zlib --with-host-libstdcxx=-lstdc++ --enable-libstdcxx-debug --enable-cxx-flags='-fno-function-sections -fno-data-sections' --disable-libstdcxx-pch --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-bootstrap
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/01/11 追記
ビルドス用のスクリプトを更新しました。
configureオプションに「--enable-fully-dynamic-string」を追加しました。
gcc-4.5.3-build-dw2-generic-2.sh
【補足】
gcc-4.5.1から、Windowsバイナリ(PE-COFF)用のLTO(Link Time Optimization)が正式に使えるようになるらしいですが、snapshot 4.5-20100624版から使えるようになっています。
configureオプションのどこかに、
--enable-lto
を追加してビルドすると、gccのコンパイルオプションに-fltoが使えるようになります。
snapshot 4.5-20100708版でビルド確認済みです。
FFmpegのコンパイルで試してみたのですが、LTOの効果の程はいまいち分かりませんでした。
新しいものをいち早く試してみたいという方はどうぞ。
2011/03/10 追記
gcc-4.5.2で、--enable-lto を追加し、ビルドして確認済みです。
【更新履歴】を見る
PPLのビルドの時に、ライブラリがビルドできているのがわかったので、ppl_lcddは放置することに決めました。
で、現在GCC本体に取り掛かろうとしているのですが、regexのリンク先が404で、どこにも見当たらないのです。
どこかにないものでしょうか…
探してみたところ、BaseSystemに統合されたようです。
http://sourceforge.net/downloads/mingw/MSYS/BaseSystem/regex/regex-1.20090805-1/
リンクを書いておきます。
ぉぉ、いつのまにかURLが変わっていたんですね。
情報ありがとうございました。