IT用語集 › プログラミング › クロスコンパイラ

クロスコンパイラ

プログラミング Svenska → 更新: 2026-11-02

あるアーキテクチャ上で動き、別のアーキテクチャ向けのコードを生成するコンパイラ。

フラッシュが64KBしかないマイコンではGCCは動かない。そこでコードはPC上でビルドし、書き込みで転送する。ツールチェーンはターゲットトリプルで識別され、arm-none-eabiならARM、OSなし、組み込み向けABIという意味になる。含まれるのはコンパイラだけではない。アセンブラ、リンカ、ターゲット向けにビルドされたCライブラリ、そしてメモリの配置を知っているリンカスクリプトが一式そろっている。

定番の頭痛の種はホストとターゲットの取り違えだ。設定時にテストプログラムを実行しようとするビルドシステム、ホストの/usr/includeから紛れ込むヘッダ、x86向けにリンクされたライブラリなどである。GCCはターゲットごとに別々にビルドしたコンパイラが必要だが、Clang/LLVMはフラグ一つでターゲットを選べる。ZigやRustがほとんど手間なくクロスコンパイルできる理由の一つだ。成果物は、実機を引っ張り出す前にまずQEMUで試されることが多い。

← 用語集に戻る