renesasのr8cマイコンのプログラムをLinux上でコンパイルするべく色々模索していたのだが、ここにあるGNUM16Cを使うといいみたい。
と言って持ってきたのだが、こっちはDebianであっちはrpmしか無いので、alienでdebにしようとしたが問題発生。どうやらパッケージがi386仕様なのが気に食わないらしく、変換してくれない。
仕方ないからi386な環境でalienしたのを持ってきてみたのだが、i386環境ではうまく動くけどamd64の方ではさっぱり動いてくれない。
ライブラリとかをいじっても解決するのかもしれないが、これは素直(?)に自分のところでGCCをmakeしろという神のお告げに違いない。

ということで色々苦戦している。大体出来たっぽいので途中経過を書いておく。
まず、gccは単独では動かないことをここまで来て知る。
だって今までapt-get install gccってやったら必要なもの全部入ったし、知らなくて当然。そうに違いない。
どうやら、newlibとbinutilsとgccがあるみたい。
newlibは標準ライブラリみたいなものだからなくてもいいようだが、
binutilsはアセンブラとかが入ってて、明らかに必須。と、言うことでbinutilsとgccをソースからmakeする。

とりあえず最新版のbinutilsとgccをDLしてきて、binutilsから建築していく。
configureにはこんなオプションをつけた。
–prefix=/usr/local –build=amd64 –host=amd64 –target=m32c-elf
buildとhostの区別がよくわからないが、結局これで良かったんだろうか・・・
targetはr8cではなく、m16cでさえなくm32c-elfである。こうやって作った奴らはmcpuオプションでm16cとm32cとm32cmとr8cを選んで色々できるようだ。よくわからん。
こっちはconfigureした後、ただmakeすればすんなりmakeできた。(そしてmake installも問題なく完了)

問題はgccであった。
とりあえずconfigureはこんなかんじ。
-v –disable-bootstrap –enable-languages=c,c++ –prefix=/usr/local/lib –infodir=/usr/local/share/info –mandir=/usr/local/share/man –bindir=/usr/local/bin –libexecdir=/usr/local/lib –libdir=/usr/local/lib –build=amd64 –host=amd64 –target=m32c-elf
gcc-avrというパッケージのrulesを半端に真似したらこんなよくわからないことに成った。
–disable-bootstrapはあってもなくてもいい(はず)だが、あるといろいろあって早いと聞いた。
さて、makeであるが問題発生。
コピーしておくのを忘れたのでエラーメッセージはここにないが、とにかくコンパイルエラーである。
さんざんconfigureオプションをいじくりまわしたが、一向に事態は好転しない。
と、言って1つ前のバージョンを持ってきてみた(4.8を4.7に下げてみた)ら、・・
違うエラーが出た。このエラーは、ggるとこんなのが出た。
ナルホド。
と言ってmake all-gccして、make installしてみたら、よくわかんないけどインストールできた。わけがわからん。

と、今日はそんなことをやった。
gccのmakeについては疑問が残っているので、また明日にでも続きをやろうかと思う。

* 追記 – 2014-3-19
gccのmakeで発生するエラーはよく見てみると、ターゲット向けのC++の標準ライブラリのビルドで発生しているようだった。
相手はマイコンで、大したことはしないので標準ライブラリは不要だと思ったので試しに
make all-host
make install-host
としてみたところなんの問題もなくインストールできた。
さて、こうやってインストールしたGCCはちゃんと動いてくれるだろうか・・・という所だが、
今すぐに何かしてみる元気は無いので明日にでもやってみようかな?