2017-03-26

H8/300開発環境の構築

Linux上で、H8/300用GCCツールチェインを構築します。

今更H8なんて激しく時代遅れな感じがしますが、訳あってH8の開発環境が必要になったこともあり、備忘録として記しておきます。

用意するファイル

gccは執筆時(2013-07-27)現在、4.8.1が最新ですが、最新のgccではH8/300への対応が打ち切られています。gcc 4.5以降はH8/300に対応していませんので、正常にコンパイルできた4.4.6を使用しました。同じくbinutils 2.17以降はH8/300に対応していませんので、2.16を使用しました。それ以外は最新版となっています。

筆者の環境では、gcc 4.4.7でのh8300-elfのコンパイルには成功したのですが、h8300-hmsが失敗しました。原因はわかりませんが、4.4.6ではどちらも成功したので、これを採用しました。

手順

前述のアーカイブをすべて展開しておきます。

su
export PATH=/usr/local/h8300-hms/bin:$PATH

cd gmp-5.1.2
mkdir build
cd build
../configure --prefix=/usr/local --disable-shared
make
make install
cd ../../

cd mpfr-3.1.2
mkdir build
cd build
../configure --prefix=/usr/local --disable-shared --with-gmp=/usr/local
make
make install
cd ../../

cd mpc-1.0.1
mkdir build
cd build
../configure --prefix=/usr/local --with-gmp=/usr/local --with-mpfr=/usr/local
make
make install
cd ../../

cd binutils-2.16
mkdir build
cd build
../configure --prefix=/usr/local/h8300-hms --target=h8300-hms --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --disable-nls
make
make install
cd ../../

cd gcc-4.4.6
mkdir build
cd build
../configure --prefix=/usr/local/h8300-hms --target=h8300-hms --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --with-newlib --with-headers=../../newlib-2.0.0/newlib/libc/include --enable-languages=c --enable-long-long --disable-shared --disable-libada --disable-libssp --disable-nls --enable-obsolete MAKEINFO=missing
make
make install
cd ../../

cd newlib-2.0.0
mkdir build
cd build
../configure --prefix=/usr/local/h8300-hms --target=h8300-hms
make
make install
cd ../../

最初の export PATH= は、newlibのコンパイル時に必要となります。

hmsじゃなくてelfが良いという方は、上記h8300-hmsを全てh8300-elfに置き換えて実行してください。

gcc の configure の最後に付いている MAKEINFO=missing ですが、texinfo文書を処理しないことを指定します。無くても成功する場合がありますが、古いgccと新しいmakeinfoの組み合わせでビルドすると、互換性の問題で、次のようなエラーが発生します。

../../gcc/doc/cppopts.texi:772: @itemx must follow @item
Makefile:4270: recipe for target 'doc/cpp.info' failed