ホスト環境は、まともなUNIX環境ならどれでも動くと思います。 Cygwinはチェックしてません。
% gzip -dc .../gcc-2.95.2.tar.gz | tar xvf - % mkdir w0; cd w0 % ../gcc-2.95.2/configure --prefix=/usr/local % make bootstrap % sudo make install
最後にsudoコマンドを使ってmake installしていますが、 これはrootでの作業を一時的に行うためのものです。 sudoコマンドのない場合はsuなりsuperなりで代用してください。 インストールしたら、
% rehash % gcc -v Reading specs from /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/specs gcc version 2.95.2 19991024 (release)とインストールしたバージョンが表示されることを確認します。
また、作業のログを残したい場合は、
(Cシェルの場合) % make bootstrap |& tee make.log (Bシェルの場合) % make bootstrap 2>&1 | tee make.logなどとteeコマンドを使うと良いでしょう。
なお、実行・オブジェクトファイルのフォーマットとしてELF、 デバッグ用情報のフォーマットとしてDWARF2を使用することにしました。 別にCOFFでもいいんですが、思ったより"common format"にならなかったのと、 新しいバージョンの日立の純正開発ツールでもELF/DWARF2を採用しているためです。
% gzip -dc .../binutils-2.10.tar.gz | tar xvf - % mkdir w1; cd w1 % ../bin-utils-2.10/configure --prefix=/usr/local --target=sh-elf % make % sudo make installこれで/usr/local/sh-elf/bin/以下にSHシリーズ用の アセンブラ、リンカ、アーカイバ、ダンプユーティリティがインストールされます。 これらのコマンドは/usr/local/bin/sh-elf-*としても使えます。
こちらもちょっと確認してみましょう。
% rehash % sh-elf-objdump --help Usage: sh-elf-objdumpelf32-shと表示されますから、おそらく大丈夫でしょう。 なお、srecはモトローラS、ihexはIntel Hexです。file(s) [略] sh-elf-objdump: supported targets: elf32-sh elf32-shl coff-sh coff-shl coff-sh-small coff-shl-small elf32-little elf32-big srec symbolsrec tekhex binary ihex Report bugs to bug-gnu-utils@gnu.org
そこで、newlibという組み込み用のライブラリを使います。 このライブラリには、ANSI C環境で プログラムをコンパイル&実行するために 必要なファイルが入ってます。 newlibは通常のUNIXでいうと、libc(Cライブラリ)やlibgcc(Cヘルパーライブラリ)や crt0.o(Cスタートアップファイル)に相当するものです。 なお、このnewlibは実行コード中に含まれるわけですので、 非個人的用途に使用する場合はライセンス条項にご注意ください。
newlibはgccのディレクトリ内からシンボリックリンクを貼っておき、 第1ステージのクロスコンパイラができた時点でビルドされるようにしておきます。
% gzip -dc .../newlib-1.8.2.tar.gz | tar xvf - % gzip -dc .../gcc-2.95.2.tar.gz | tar xvf - % cd gcc-2.95.2 % ln -s ../newlib-1.8.2/newlib .
% mkdir w2; cd w2 % ../gcc-2.95.2/configure --prefix=/usr/local --target=sh-elf --with-gnu-as --with-gnu-ld --with-dwarf2 --disable-multilib --enable-languages=c --with-newlibコンパイルします。ちょっと時間がかかりますので、 お茶の準備でもしながらどうぞ ^^;
% make % sudo make installこれもできあがったら確認作業をします。
% rehash % echo "main(){}" > null.c % sh-elf-gcc -v null.c Reading specs from /usr/local/lib/gcc-lib/sh-elf/2.95.2/specs gcc version 2.95.2 19991024 (release) /usr/local/lib/gcc-lib/sh-elf/2.95.2/cpp -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__sh__ -D__ELF__ -D__sh__ -D__ELF__ -Acpu(sh) -Amachine(sh) -D__sh1__ null.c /tmp/ccuaPbr8.i GNU CPP version 2.95.2 19991024 (release) (Hitachi SH) #include "..." search starts here: #include <...> search starts here: /usr/local/lib/gcc-lib/sh-elf/2.95.2/include /usr/local/lib/gcc-lib/sh-elf/2.95.2/../../../../sh-elf/include End of search list. The following default directories have been omitted from the search path: /usr/local/lib/gcc-lib/sh-elf/2.95.2/../../../../include/g++-3 /usr/local/lib/gcc-lib/sh-elf/2.95.2/../../../../sh-elf/sys-include End of omitted list. /usr/local/lib/gcc-lib/sh-elf/2.95.2/cc1 /tmp/ccuaPbr8.i -quiet -dumpbase null.c -version -o /tmp/ccAjW107.s GNU C version 2.95.2 19991024 (release) (sh-elf) compiled by GNU C version 2.95.2 19991024 (release). /usr/local/sh-elf/bin/as -o /tmp/ccP0iusj.o /tmp/ccAjW107.s /usr/local/lib/gcc-lib/sh-elf/2.95.2/collect2 /usr/local/sh-elf/lib/crt0.o -L/usr/local/lib/gcc-lib/sh-elf/2.95.2 -L/usr/local/sh-elf/lib /tmp/ccP0iusj.o -lgcc -lc -lgcc良さそうですね。ここから分かるのは、
% mkdir w3; cd w3 % ../gdb-5.0/configure --prefix=/usr/local --target=sh-elf % make % sudo make install % rehash % sh-elf-gdb --version GNU gdb 5.0 Copyright 2000 Free Software Foundation, Inc. [略] This GDB was configured as "--host=i586-pc-linux-gnu --target=sh-elf".