クロスコンパイラは https://crosstool-ng.github.io/ でダウンロードできます。
2020年4月時点での最新版 crosstool-ng-1.25.0_rc1 を展開し、フォルダ内に入ります。
$ ./bootstrap
$ ./configure –enable-local
$ make -j`nproc`
$ ./configure –enable-local
$ make -j`nproc`
正常にインストールされた場合、ct-ng コマンドが使えるようになります。
対象がSH3の場合、以下のように設定を読み込み設定を変更しますが、この時点ではデフォルトのプロセッサはSH4となっています。
$ ./ct-ng sh-multilib-linux-gnu
$ ./ct-ng menuconfig
$ ./ct-ng menuconfig
linuxカーネルとgccコンパイラは必要に応じてバージョンを選択します。



デフォルトでSH3に変更するには以下のように設定します。


また、gdbを使わない場合は、デフォルトで有効なので、無効にします。

$ ./ct-ng build
設定が完了したら、上記のようにビルドをします。

基本的にデフォルトの設定では上記のようにビルドが成功します。
実行ファイルは以下にインストールされますので、PATHを追加します。
$ ls ~/x-tools/sh-multilib-linux-gnu/bin
sh-multilib-linux-gnu-addr2line sh-multilib-linux-gnu-gcov-dump
sh-multilib-linux-gnu-ar sh-multilib-linux-gnu-gcov-tool
sh-multilib-linux-gnu-as sh-multilib-linux-gnu-gprof
sh-multilib-linux-gnu-c++ sh-multilib-linux-gnu-ld
sh-multilib-linux-gnu-c++filt sh-multilib-linux-gnu-ld.bfd
sh-multilib-linux-gnu-cc sh-multilib-linux-gnu-ldd
sh-multilib-linux-gnu-cpp sh-multilib-linux-gnu-nm
sh-multilib-linux-gnu-ct-ng.config sh-multilib-linux-gnu-objcopy
sh-multilib-linux-gnu-elfedit sh-multilib-linux-gnu-objdump
sh-multilib-linux-gnu-g++ sh-multilib-linux-gnu-populate
sh-multilib-linux-gnu-gcc sh-multilib-linux-gnu-ranlib
sh-multilib-linux-gnu-gcc-6.5.0 sh-multilib-linux-gnu-readelf
sh-multilib-linux-gnu-gcc-ar sh-multilib-linux-gnu-size
sh-multilib-linux-gnu-gcc-nm sh-multilib-linux-gnu-strings
sh-multilib-linux-gnu-gcc-ranlib sh-multilib-linux-gnu-strip
sh-multilib-linux-gnu-gcov
sh-multilib-linux-gnu-addr2line sh-multilib-linux-gnu-gcov-dump
sh-multilib-linux-gnu-ar sh-multilib-linux-gnu-gcov-tool
sh-multilib-linux-gnu-as sh-multilib-linux-gnu-gprof
sh-multilib-linux-gnu-c++ sh-multilib-linux-gnu-ld
sh-multilib-linux-gnu-c++filt sh-multilib-linux-gnu-ld.bfd
sh-multilib-linux-gnu-cc sh-multilib-linux-gnu-ldd
sh-multilib-linux-gnu-cpp sh-multilib-linux-gnu-nm
sh-multilib-linux-gnu-ct-ng.config sh-multilib-linux-gnu-objcopy
sh-multilib-linux-gnu-elfedit sh-multilib-linux-gnu-objdump
sh-multilib-linux-gnu-g++ sh-multilib-linux-gnu-populate
sh-multilib-linux-gnu-gcc sh-multilib-linux-gnu-ranlib
sh-multilib-linux-gnu-gcc-6.5.0 sh-multilib-linux-gnu-readelf
sh-multilib-linux-gnu-gcc-ar sh-multilib-linux-gnu-size
sh-multilib-linux-gnu-gcc-nm sh-multilib-linux-gnu-strings
sh-multilib-linux-gnu-gcc-ranlib sh-multilib-linux-gnu-strip
sh-multilib-linux-gnu-gcov
クロスコンパイラのデフォルトがSH3になっていることの確認のため、以下のように確認します。

–with-cpu=sh3 の文字が含まれていれば、クロスコンパイラのデフォルトがSH3になっています。