あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

RasPi向けのクロスコンパイル環境作りでエラーが出た時の対処

RasPi向けのクロスコンパイル環境作りを、ユーザー会本のとおりにやっていたらエラーでずっこけて悩んだのでメモ。いつまでも本と同じバージョンとかでできるわけではないので、バージョンの違いによるバグがいろいろ出てくるようです。

今回はcrosstool-ng-1.19.0で、Kernel 3.10.2を選択し、gccはlinaro-4.8-2013.06を選択。ct-ng buildすると、以下の通りpass-2 core C compilerのところでエラーになりました。

[INFO ]  Installing pass-2 core C compiler
[ERROR]    /home/akkie/work/build/.build/src/gcc-linaro-4.8-2013.06-1/gcc/optabs.h:24:25: fatal error: insn-opinit.h: No such file or directory
[ERROR]    /home/akkie/work/build/.build/src/gcc-linaro-4.8-2013.06-1/gcc/optabs.h:24:25: fatal error: insn-opinit.h: No such file or directory
[ERROR]    make[2]: *** [lra-constraints.o] Error 1
[ERROR]    make[2]: *** [lra-eliminations.o] Error 1
[ERROR]    make[1]: *** [all-gcc] Error 2

別のマシンでビルドした時は通ったので「??」となりましたが、解決法は以下のURLにありました。

http://sourceware.org/ml/crossgcc/2013-06/msg00036.html

insn-opinit.hというファイルがないという内容ですが、どうもMakefileでビルド順の指定が良くないらしく、パラレルでビルドされる環境では失敗する場合があるとのこと。なるほど会社のリッチなサーバーで作ったのがリッチすぎたのかしら(Xeon X5570を2発のブレード)。

${HOME}/work/build/.build/src/gcc-linaro-4.8-2013.06-1/gcc/Makefile.in を、URLのパッチの指示通り書き換えて再度ct-ng buildするととおります。

というわけで(どういうわけで?)いつものリンクもペタペタしておきますね。

Raspberry Pi〔実用〕入門 ~手のひらサイズのARM/Linuxコンピュータを満喫! (Software Design plus)

Raspberry Pi〔実用〕入門 ~手のひらサイズのARM/Linuxコンピュータを満喫! (Software Design plus)

ちなみに、gccでlinaro4.7を選んでも、なんかよくわからないけれどエラーになっていました。うーん

追記:gccでlinaro4.7を選んでエラーになるやつ

こちらはGMPというやつのバージョンがあたらしすぎて、その後のPPLのコンパイルに支障が出るようでした。.configファイルを開いて、GMPのバージョンを5.1.0から5.0.2とかに書き換える(2箇所でした)ことで、ビルドできます。たぶんmenuconfigでも選択できると思うけれど(思いたい)。