Mountain Lionユーザのためのクロスコンパイラビルド - Handwriting を読んでこの事実を知りました(それまで5回ぐらいクロスコンパイル用 GCC をビルドしようとして失敗していました)。
以下、ビルド手順メモ
ネイティブ用 GCC ビルド
クロスコンパイル用 GCC をビルドするための GCC をビルドします。A bare-metal x86-cross-compiler on Mountain Lion | The Intobooks や、そこからリンクされている Compiling gcc-4.7.1 on Mac OSX Lion が参考になりました。これらの記事の手順は僕の Mountain Lion でも使えました。
各種ソースコードのダウンロードと展開
$ cd ~ $ mkdir gcc-4.8.1 $ cd gcc-4.8.1 $ curl -O http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.gz $ curl -O http://ftp.tsukuba.wide.ad.jp/software/gmp/gmp-5.1.3.tar.gz $ curl -O http://ftp.tsukuba.wide.ad.jp/software/mpfr/mpfr-3.1.2.tar.gz $ curl -O http://ftp.tsukuba.wide.ad.jp/software/mpc/mpc-1.0.1.tar.gz $ tar zxvf gcc-4.8.1.tar.gz $ tar xzvf gmp-5.1.3.tar.gz $ tar xzvf mpfr-3.1.2.tar.gz $ tar xzvf mpc-1.0.1.tar.gz
ビルドとインストール
ビルドするまえに環境変数 PATH の値をなるべくシンプルに調整するとミスがありません。PATHを調整し終えたらいざビルド。
GMP
$ mkdir gmp-build $ cd gmp-build $ ../gmp-5.1.3/configure --prefix=/Users/uchan/gcc-4.8.1/ --enable-cxx $ make -j4 $ make install $ cd ..
MPFR
$ mkdir mpfr-build $ cd mpfr-build $ ../mpfr-3.1.2/configure --prefix=/Users/uchan/gcc-4.8.1 --with-gmp=/Users/uchan/gcc-4.8.1 $ make -j4 $ make install $ cd ..
MPC
$ mkdir mpc-build $ cd mpc-build $ ../mpc-1.0.1/configure --prefix=/Users/uchan/gcc-4.8.1 --with-gmp=/Users/uchan/gcc-4.8.1 --with-mpfr=/Users/uchan/gcc-4.8.1 $ make -j4 $ make install $ cd ..
GCC
$ mkdir gcc-build $ cd gcc-build $ ../gcc-4.8.1/configure --prefix=/Users/uchan/gcc-4.8.1 --enable-checking=release --with-gmp=/Users/uchan/gcc-4.8.1 --with-mpfr=/Users/uchan/gcc-4.8.1 --with-mpc=/Users/uchan/gcc-4.8.1 --enable-languages=c,c++ $ make -j4 $ make install $ cd ..
以上でクロスコンパイル用 GCC をビルドするためのネイティブ GCC が出来上がりました!(ややこしい(^^;
さて、やっとクロスコンパイル用 GCC のビルドです。まず PATH の調整など。先ほどビルドした GCC のパスと、クロスコンパイル用 GCC のパスも忘れず通します。GCC, GMP, MPFR, MPC のソースは先ほど展開したものを再利用します。
$ export PATH=$HOME/i686-elf-gcc-4.8.1/bin:$HOME/gcc-4.8.1/bin:$PATH $ cd ~ $ mkdir i686-elf-gcc-4.8.1
$ cd i686-elf-gcc-4.8.1 $ mkdir src $ cd src $ ln -s ~/gcc-4.8.1/src/gcc-4.8.1 ./ $ ln -s ~/gcc-4.8.1/src/gmp-5.1.3 ./ $ ln -s ~/gcc-4.8.1/src/mpfr-3.1.2 ./ $ ln -s ~/gcc-4.8.1/src/mpc-1.0.1 ./
binutils
$ curl -O http://ftp.tsukuba.wide.ad.jp/software/binutils/releases/binutils-2.23.2.tar.bz2 $ tar xjvf binutils-2.23.2.tar.bz2 $ mkdir binutils-build $ cd binutils-build $ ../binutils-2.23.2/configure --prefix=/Users/uchan/i686-elf-gcc-4.8.1 --target=i686-elf $ make -j4 $ make install $ cd ..
GCC
$ mkdir gcc-build $ cd gcc-build $ ../gcc-4.8.1/configure --prefix=/Users/uchan/i686-elf-gcc-4.8.1 --target=i686-elf --enable-languages=c,c++ --without-headers $ make -j4 all-gcc $ make install-gcc
必要な configure オプションについては 開発環境(自作OS) - こうじのがく まとめ(自作OS、ホームページ作成) を参考にしました。
- --without-headers : 自作 OS 開発には標準ヘッダファイルや標準ライブラリは要りませんので、これを指定しておきましょう。
以上でクロスコンパイル用 GCC のインストールは完了です。やったね!