どの本のことを言っているか
この本です。
gcc3.4.6を使うと書いてあったのですが最新はgcc6.3.0。
ということで「いやーやっぱりLatestで環境構築でしょー」とか調子乗ったら全然コンパイル通らなくて泣いた。
使ったソフトウェアのバージョン
gcc: gcc6.3.0
ちなみに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 でいけるはず。