せとブログ

学んだことを忘れない

H8/3069F用クロスコンパイラのビルド

どの本のことを言っているか

この本です。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

 

gcc3.4.6を使うと書いてあったのですが最新はgcc6.3.0。

ということで「いやーやっぱりLatestで環境構築でしょー」とか調子乗ったら全然コンパイル通らなくて泣いた。 

使ったソフトウェアのバージョン

gcc: gcc6.3.0

binutils: binutils-2.28

ちなみにcygwinでやってます。cygwin 64bit版です。

gcc6.3.0でハマったこと

./configureが通らない

checking for MPFR... no
configure: error: libmpfr not found or uses a different ABI.

こんなエラーで止まる。

./contrib/download_prerequisites で必要なLibraryを落としてくる必要あり。

別でいれるのかな?と思ってやってたけど結局これで通った。Latestじゃないけどあまり気にしない。gccディレクトリの中に入れればうまくいくっぽいけど未検証。

compilation - Cannot configure gcc - mpfr not found - Stack Overflow

makeが通らない

Makefile:142: ../.././gcc/libgcc.mvars: No such file or directory
make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'. Stop. 

 こんなエラーで止まる。

どうもソースのディレクトリとビルドのディレクトリが別でないといけないらしい。

ということで、

$ mkdir build

$ cd build

$ ../configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c

 みたいにしてやって、ソースコードがあるところとビルドするディレクトリを変えてやる。

H8クロスコンパイル環境の整備 - かわのプリミティブな作業記録

それでもmakeが通らない

よし来たぁ!と思ってしばらく待っていると最後の最後でコケる…。

../../../libssp/ssp.c:104: error: 'size_t' undeclared (first use in this function) 

こんな感じのエラーが出る。undeclaredだよと。

調べるとどうもconfigureでオプションをつけると通るらしい。libsspをdisableするそう。

$ ../configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --enable-languages=c --disable-libssp

 GCC compile failure? | AVR Freaks

ここまで来たら、あとは make install でいけるはず。