cygwinでmingwをビルドしてみる
setup.exeから入るmingwのgccはバージョン3なので
gcc4.4を自力でビルドしてみる。
参考
http://bitwalk.hp.infoseek.co.jp/
必要なアーカイブを入手
target名を決める。
今回は、後で隣のLinuxとdistccを使いたいのもあるので
統一するためにi686-mingw32とした。
i386-mingw32やi686-pc-mingw32というのもあるが、pcは在っても無くていいのかよくわからない。
pcの有無はi686-mingw32-c++.exeがi686-pc-mingw32-c++.exeになったりするので
影響はあるがビルドすることはできる様子。
binutils
順番が前後するがまずbinutilsのビルドから。
$ tar zxf binutils-2.19.1-src.tar.gz $ mkdir build_binutils $ cd build_binutils $ ../configure --prefix=/usr/local --target=i686-mingw32 -v $ make $ make install $ cd /usr/local/bin $ ls i686-mingw32-* i686-mingw32-addr2line.exe* i686-mingw32-dllwrap.exe* i686-mingw32-objdump.exe* i686-mingw32-strip.exe* i686-mingw32-ar.exe* i686-mingw32-gprof.exe* i686-mingw32-ranlib.exe* i686-mingw32-windmc.exe* i686-mingw32-as.exe* i686-mingw32-ld.exe* i686-mingw32-readelf.exe* i686-mingw32-windres.exe* i686-mingw32-c++filt.exe* i686-mingw32-nm.exe* i686-mingw32-size.exe* i686-mingw32-dlltool.exe* i686-mingw32-objcopy.exe* i686-mingw32-strings.exe*
gcc依存パッケージ
通常の開発環境(gcc-4とかmake, bison, flexその他諸々)
に加えてgccのビルドに必要なパッケージを追加する。
setup.exeで以下のものを追加した。
- libgpm-devel(Math)
- libmpfr-devel(Math)
- ppl-devel(Math)
- libcloog-devel(Devel)
上のふたつは必須で、下のふたつはgcc-4.4からの最適化機構Graphiteを
有効にするのに要るらしい。
http://alohakun.blog7.fc2.com/blog-entry-990.html
クロスコンパイル用ランタイム
mingwとwin32apiのruntimeを展開する
$ tar -C /usr/local/i686-mingw32 -zxf w32api-3.13-mingw32-dev.tar.gz $ tar -C /usr/local/i686-mingw32 -zxf mingwrt-3.15.2-mingw32-dll.tar.gz $ tar -C /usr/local/i686-mingw32 -zxf mingwrt-3.15.2-mingw32-dev.tar.gz # 展開先を間違えていたのを修正。
gccのビルド
$ tar jxf gcc-4.4.0-src.tar.bz2 $ mkdir build_gcc $ cd build_gcc $ ../gcc-4.4.0/configure --prefix=/usr/local --target=i686-mingw32 --enable-languages=c,c++ -v $ make
うちのマシンでは数時間かかるので寝てる間にできるように仕込み。
うまくいっているとよいが。
$ make install $ cd /usr/local/bin $ ls i686-mingw32-* i686-mingw32-addr2line.exe* i686-mingw32-cpp.exe* i686-mingw32-gcc.exe* i686-mingw32-nm.exe* i686-mingw32-size.exe* i686-mingw32-ar.exe* i686-mingw32-dlltool.exe* i686-mingw32-gccbug* i686-mingw32-objcopy.exe* i686-mingw32-strings.exe* i686-mingw32-as.exe* i686-mingw32-dllwrap.exe* i686-mingw32-gcov.exe* i686-mingw32-objdump.exe* i686-mingw32-strip.exe* i686-mingw32-c++.exe* i686-mingw32-g++.exe* i686-mingw32-gprof.exe* i686-mingw32-ranlib.exe* i686-mingw32-windmc.exe* i686-mingw32-c++filt.exe* i686-mingw32-gcc-4.4.0.exe* i686-mingw32-ld.exe* i686-mingw32-readelf.exe* i686-mingw32-windres.exe*
問題なし