Ceci est une ancienne révision du document !
On utilise des outils (on parle de chaine de compilation croisée ou cross toolchain) pour générer des fichiers exécutables par une autre machine (la cible) basée sur une architecture différente.
Application courante: J'utilise mon PC pour générer des programmes qui s'éxecuteront sur une machine ayant de plus faibles ressources: ma raspeberry Pi.
Cela peut sembler plus compliqué, pourquoi ne pas les générer les programmes directement sur la cible? Souvent ces cibles sont des plateformes légères, dédiée à de l'embarqué par exemple. Leurs ressources sont limitées: espace de stockage, cadence du processeur, quantité de mémoire. La génération des binaires peut être bien plus longue.
La chaine de compilation croisée désigne un esemble d'outils dédiés à la génération de fichiers exécutables sur la plateforme cible:
La plupart des distributions proposent des cross toolchain précompilée. Elles ont pour avantage d'être simple à mettre en place. Par contre elle sont génériques.
La compilation d'une chaine peut s'averrer fastidieux. Regrouper les packages, tenter la compilation, résoudres incompatibilités, appliquer les patchs recompiler… Certains outils permettent de sélectionner les bonnes versions de packages et de compiler la chaine: