2017-03-26
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