SNSへはこちら

gccとかのビルドでコケる時の個人的対症療法

随時更新。
マイコンとかの gcc をビルドしていてエラーが出ることがあります。その際、対処法が個人的にある程度パターン化しているので、ググっても出てきにくい内容をさらっと書いていきます。

warningでビルドが止まる

デフォルトでビルドスクリプトが -Werror を指定しているため、Warning でエラーになります。特に switch 文の fall-through が原因であることが多いですかね。習慣的に ../configure する際に --disable-werror をつけておけばいいでしょう。

xgccでSegmentation Fault 11が出る

コンパイラのバグです。ぶっちゃけ対処法は無いっちゃないのですが、例えば同一アーキテクチャのビルド済み別バージョンのコンパイラを使うことで解決できるかなと感じます。
また、ソースコードの字句解析の際にメモリが溢れているということも考えられます。ちょこっと周辺の構文を変えてみるとかしてもいいと思います(解決の可能性は薄いけど)。

なお、こういうときは大体 -m 関連(例えば -mcpu= とか)を適当に切り替えるとすんなりコンパイルが通ることがあります。危険なので絶対にやるべきではありませんが。

internal compiler errorで止まる

何らかの字句解析 or コード最適化に失敗している可能性があります。最適化オプションを -O2-Os から、-O0 とすると解決する可能性が大です。

arコマンドでinvalid optionと怒られる

何らかのミスでビルドスクリプトに ar の実行内容が書いていないことがありました。大体は .a アーカイブの生成なので、rc と書いておけばいいです。