Kompilator krzyżowy
Kompilator, który działa na jednej architekturze, ale generuje kod dla innej.
Mikrokontroler z 64 KB flasha nie uruchomi GCC, więc kod buduje się na komputerze, a potem wgrywa na układ. Zestaw narzędzi opisuje się tzw. tripletem docelowym: arm-none-eabi oznacza ARM, brak systemu operacyjnego, wbudowane ABI. W skład toolchainu wchodzi nie tylko kompilator, ale też asembler, linker, biblioteka C zbudowana dla platformy docelowej oraz skrypt linkera, który wie, gdzie leży pamięć.
Klasyczny ból głowy to pomylenie hosta z celem: systemy budowania uruchamiające programy testowe podczas konfiguracji, nagłówki z /usr/include hosta wkradające się do budowy, biblioteka zlinkowana dla x86. GCC wymaga osobno zbudowanego kompilatora dla każdej platformy, a Clang/LLVM wybiera cel flagą — to jeden z powodów, dla których Zig i Rust kompilują krzyżowo prawie bez ceremonii. Wynik często sprawdza się w QEMU, zanim ktoś sięgnie po prawdziwą płytkę.