Suivant: , Monter: Architectures externes   [Table des matières][Index]


11.1 Compilation croisée

Les commandes qui prennent en charge la compilation croisée proposent les options --list-target et --target.

L’option --list-targets liste toutes les cibles prises en charge qui peuvent être passées en argument à --target.

$ guix build --list-targets
Les cibles disponibles sont :

   - aarch64-linux-gnu
   - arm-linux-gnueabihf
   - i586-pc-gnu
   - i686-linux-gnu
   - i686-w64-mingw32
   - mips64el-linux-gnu
   - powerpc-linux-gnu
   - powerpc64le-linux-gnu
   - riscv64-linux-gnu
   - x86_64-linux-gnu
   - x86_64-w64-mingw32

Les cibles sont spécifiées comme des triplets GNU (voir GNU configuration triplets dans Autoconf).

Ces triplets sont passés à GCC et aux autres compilateurs sous-jacent éventuellement impliqués dans la construction d’un paquet, d’une image système et de toute autre sortie de GNU Guix.

$ guix build --target=aarch64-linux-gnu hello
/gnu/store/9926by9qrxa91ijkhw9ndgwp4bn24g9h-hello-2.12

$ file /gnu/store/9926by9qrxa91ijkhw9ndgwp4bn24g9h-hello-2.12/bin/hello
/gnu/store/9926by9qrxa91ijkhw9ndgwp4bn24g9h-hello-2.12/bin/hello: ELF
64-bit LSB executable, ARM aarch64 …

The major benefit of cross-compilation is that there are no performance penalty compared to emulation using QEMU. There are however higher risks that some packages fail to cross-compile because fewer users are using this mechanism extensively.