結論
以下の組み合わせでH8/300H用のツールチェインがビルド可能。(11/4 追記:ただしnewlibの動作を実機マイコンで確認していない。GCCはH8/3664Fでの動作を確認済み)
- Debian 10.6
- binutils-2.30
- gcc-8.4.0
- newlib-2.5.0
はじめに
Debian/UbuntuにはH8/300H用のパッケージ(gcc-h8300-hms 3.4.6,binutils-h8300-hms 2.16.1)が用意されているものの,既にバージョンが古くnewlibもない。
また,各所で紹介されている情報も古くなりつつあるため,最低限のアップデート情報を紹介する。
準備
以下のパッケージをインストールする。
apt install build-essential libgmp-dev libmpfr-dev libmpc-dev bison flex texinfo
apt install porg
porgは野良ビルドを管理するためのツール。野良ビルド管理 porg のメモ。などを参照のこと。
手順
構築手順およびconfigureオプションは以下の通り。(スクリプトとして実行できる)
#!/bin/sh
# get and extract archives
wget http://ftp.gnu.org/gnu/binutils/binutils-2.30.tar.bz2
wget https://mirror.jre655.com/GNU/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz
wget ftp://sourceware.org/pub/newlib/newlib-2.5.0.tar.gz
tar xfv binutils-2.30.tar.bz2
tar xfv gcc-8.4.0.tar.xz
tar xfv newlib-2.5.0.tar.gz
# prepair directories
mkdir h8300-elf
mkdir h8300-elf/binutils
mkdir h8300-elf/gcc_stage1
mkdir h8300-elf/newlib
mkdir h8300-elf/gcc
# build binutils
cd h8300-elf/binutils
../../binutils-2.30/configure --prefix=/usr/local --target=h8300-elf --disable-nls --disable-initfini-array --enable-lto
make -j4
sudo porg -lp binutils-h8300-elf "make install"
cd ../..
porgball -x binutils-h8300-elf
# build gcc stage1
cd h8300-elf/gcc_stage1
../../gcc-8.4.0/configure --prefix=/usr/local --target=h8300-elf --disable-nls --disable-initfini-array --enable-lto --disable-decimal-float --disable-fixed-point --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-threads --disable-tls --enable-languages=c --with
-newlib
make -j4 all-gcc
sudo porg -lp gcc-h8300-elf-stage1 "make install"
cd ../..
# build newlib
cd h8300-elf/newlib
../../newlib-2.5.0/configure --prefix=/usr/local --target=h8300-elf
make -j4
sudo porg -r gcc-h8300-elf-stage1
sudo porg -lp newlib-h8300-elf "make install"
cd ../..
porgball -x newlib-h8300-elf
# build gcc agein
cd h8300-elf/gcc
../../gcc-8.4.0/configure --prefix=/usr/local --target=h8300-elf --disable-nls --disable-initfini-array --enable-lto --disable-decimal-float --disable-fixed-point --disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-threads --disable-tls --enable-languages=c,c++ --with-newlib --disable-shared --disable-libstdc__-v3
make -j4
sudo porg -lp gcc-h8300-elf "make install"
cd ../..
porgball -x gcc-h8300-elf
newlibなしでC++を作ろうとすると失敗するので,GCCの構築を2回やっています。
Windowsなら
GNU Toolchain for Hitachi H8/300 series for Windowsにあるバイナリを使わせてもらうのがよいと思います。
参考文献
- ひかえん2の日記 2017-01-01 DebianでH8用(h8300-hms)のGCCをビルドする, http://hikaen2.hatenablog.com/entry/20170101/1483251025 ,2020-10-26 閲覧
- ひかえん2の日記 2013-11-12 Debian GNU/Linux の gcc-h8300-hms について, http://hikaen2.hatenablog.com/entry/20131112/1384249433 ,2020-10-26 閲覧
- なんとなく活動記録。 2019/7/20 各種マイコン用gccのバージョン・ビルド法等まとめ, http://blueeyes.sakura.ne.jp/2019/07/20/2459/ ,2020-10-26 閲覧
- saito's memo newlibベースのgccツールチェインの作成, https://memo.saitodev.com/home/arm/arm_gcc_newlib/ ,2020-10-26 閲覧
- 未処理の例外が発生しました 2019/04/20 GNU Toolchain for Hitachi H8/300 series for Windows, http://exception.blog.shinobi.jp/iot/gnu%20toolchain%20for%20hitachi ,2020-10-26 閲覧