クロスコンパイラの作り方
導入
今回使うのは、Pantherが載ったG5マシンです。かなり速いマシンなので、コンパイル作業の時間短縮が期待できます。早速、Distcc で分散コンパイルを参考にLinux(x86)対応のクロスコンパイラを作ることにしましょう。
※現在はGentoo Linuxを用いる方法なので汎用性はありません。
用意するもの
- binutils (Ringサーバ等で入手できます)
- gcc (Ringサーバ等で入手できます)
- glibcのGRP (Gentoo上でquickpkg glibc を実行して作ることもできます)
- linux-headersのGRP (Gentoo上でemerge -B linux-headers を実行して作ることもできます)
binutilsをインストールします。
tar xvzf binutils-2.14.tar.gz mkdir binutils-work cd binutils-work ../binutils-2.14/configure --prefix=/usr/local --target=i686-linux make sudo make install
Mac OS Xの場合、/usr/local/binにパスが通っていませんので、パスを通す必要があります。下はbashの例。
export PATH=${PATH}:/usr/local/bin
glibcおよびlinux-headersを展開します。
sudo -s cd /usr/local/i686-linux tar xvjf /path/to/glibc-2.3.2-r9.tbz2 tar xvjf /path/to/linux-headers-2.4.21.tbz2 exit
/usr/local/i686-linux/usr/以下のファイルを/usr/local/i686-linuxに移動します。
sudo -s cd /usr/local/i686-linux cp -R -H usr/* ./ rm -r usr exit
/usr/local/i686-linux/lib/libc.soを開き、GROUPの部分を適切なパスに変更します。
GROUP ( /usr/local/i686-linux/lib/libc.so.6 /usr/local/i686-linux/lib/libc_nonshared.a )
gccをインストールします。
tar xvzf gcc-3.3.2.tar.gz mkdir gcc-work cd gcc-work ../gcc-3.3.2/configure --prefix=/usr/local --target=i686-linux --enable-shared --enable-threads --enable-languages=c,c++ make sudo make install