Cross-compiler
Un compilatore che gira su un'architettura ma produce codice per un'altra.
Un microcontrollore con 64 KB di flash non può eseguire GCC, perciò il codice viene compilato su un PC e poi trasferito sulla scheda. La toolchain si identifica con un target triplet: arm-none-eabi significa ARM, nessun sistema operativo, ABI embedded. Comprende non solo il compilatore ma anche assembler, linker, una libreria C costruita per il target e un linker script che sa dove si trova la memoria.
Il classico mal di testa è confondere host e target: sistemi di build che eseguono programmi di prova durante la configurazione, header di /usr/include dell'host che si infilano nel progetto, una libreria collegata per x86. GCC richiede un compilatore costruito separatamente per ciascun target, mentre Clang/LLVM sceglie il target con un'opzione: è uno dei motivi per cui Zig e Rust si compilano in modo incrociato con pochissime cerimonie. Il risultato viene spesso provato in QEMU prima di tirare fuori una scheda vera.