binutils を先にインストールしておかないと、GCC のコンパイルで以下のエラーが出る。
checking for suffix of object files... configure: error: in /home/hoge/work/gcc-4.4.0/objdir/h8300-elf/libgcc': configure: error: cannot compute suffix of object files: cannot compile See `config.log' for more details. make[1]: *** [configure-target-libgcc] Error 1 make[1]: Leaving directory `/home/hoge/work/gcc-4.4.0/objdir' make: *** [all] Error 2
という訳で、インストールする。
$ tar zxvf binutils-2.19.tar.gz $ cd binutils-2.19 $ mkdir objdir $ cd objdir/ $ ../configure \ > --prefix=/usr/local/cross/h8 \ > --target=h8300-elf \ > --disable-nls \ > --with-newlib $ make
GCC の configureで、システムに GMP と MPFR の適当なバージョンがインストールされていないと、以下のメッセージが出るので必要なものをインストールする。
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.2+. Try the --with-gmp and/or --with-mpfr options to specify their locations. Copies of these libraries' source code can be found at their respective hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP and/or MPFR from a vendor distribution package, make sure that you have installed both the libraries and the header files. They may be located in separate packages.
適当なフォルダで、以下を実行。
$ tar jvxf gmp-4.2.4.tar.bz2 $ cd gmp-4.2.4 $ ./configure --prefix=/usr/local/gmp-4.2.4 --build=i586 $ make $ make check $ make install
Libraries have been installed in: /usr/local/gmp-4.2.4/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
適当なフォルダで以下を実行する。
$ tar zvxf mpfr-2.4.1.tar.gz $ cd mpfr-2.4.1 $ ./configure --prefix=/usr/local/mpfr-2.4.1 \ > --with-gmp-include=/usr/local/gmp-4.2.4/include \ > --with-gmp-lib=/usr/local/gmp-4.2.4/lib \ > --build=i586 $ make $ make check $ make install
Libraries have been installed in: /usr/local/mpfr-2.4.1/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
$ ../configure \ --with-gmp=/usr/local/gmp-4.2.4 --with-mpfr=/usr/local/mpfr-2.4.1 \ --disable-nls --enable-shared --enable-languages=c \ --target=h8300-elf --prefix=/usr/local/cross/h8 \ --with-newlib \ --with-headers=/usr/src/rpm/SOURCES/h8-newlib-1.10.0/newlib/libc/include $ make BOOT_LDFLAGS="-static"
うをっ!? エラーが出たよ。
/usr/local/cross/h8/h8300-elf/sys-include/machine/ieeefp.h:207:2: error: #error Endianess not declared!!
ちょっと調べたのだが、英語のドキュメントばかりで、現時点では根本的な原因は分からない。
とりあえず、エンディアンがハッキリすれば良いのだろうから、強引に ieeefp.h を修正。
エラーは消えたが…、まぁ、ターゲットがハッキリしているので良いか?
$ cd h8-newlib-1.10.0 $ mkdir objdir $ cd objdir $ configure --target=h8300-elf --prefix=/usr/local/cross/h8 $ export PATH=/usr/local/cross/h8/bin:$PATH ← 新しいH8-GCCを使うのでパスを通す。 $ make $ make install