Chapitre 1
Toolchain de compilation croisée
20/10/2025 Faten BELLAKHDHAR 1
Chapitre 1
• Les outils de développement classiques disponibles sur une station de
travail GNU/Linux sont une chaîne d'outils native.
• Cette chaîne d'outils s'exécute sur votre station de travail et génère du
code pour votre station, généralement x86.
• Pour le développement de systèmes embarqués, il est généralement
impossible ou peu intéressant d'utiliser une chaîne d'outils native.
• La cible est trop limitée en termes de stockage et/ou de mémoire.
• La cible est très lente par rapport à votre station de travail.
• Vous ne souhaitez peut-être pas installer tous les outils de
développement sur votre cible.
Par conséquent, les chaînes d'outils de compilation croisée sont
généralement utilisées. Elles s'exécutent sur votre station de travail mais
génèrent du code pour votre cible.
20/10/2025 Faten BELLAKHDHAR 2
20/10/2025 Faten BELLAKHDHAR 3
Chapitre 1
Construction de toolchains
Build Host Target Build Host Target
Native Build Cross Build
Build Host Target Build Host Target
Cross Native Build Canadian Cross Build
20/10/2025 Faten BELLAKHDHAR 4
Chapitre 1
Composants de gcc toolchains
20/10/2025 Faten BELLAKHDHAR 5
Chapitre 1
Binutils
Binutils est un ensemble d'outils permettant de générer et de manipuler des
fichiers binaires (généralement au format ELF) pour une architecture CPU
donnée. Les composants principaux de Binutils incluent :
• as, ld, le programme de liaison? ar et ranlib
• objdump, readelf, size, nm, strings,
• objcopy, strip,
20/10/2025 Faten BELLAKHDHAR 6
Chapitre 1
Kernel headers (1)
20/10/2025 Faten BELLAKHDHAR 7
Chapitre 1
C/C++ compiler
• GCC : GNU Compiler Collection, le célèbre compilateur de logiciel libre
• Peut compiler du C, du C++, de l'Ada, du Fortran, du Java, de l'Objective-C,
de l'Objective-C++, du Go, etc.
• Peut générer du code pour un grand nombre d'architectures CPU, y
compris x86, ARM, RISC-V et bien d'autres.
20/10/2025 Faten BELLAKHDHAR 8
Chapitre 1
C library
20/10/2025 Faten BELLAKHDHAR 9
Chapitre 1
glibc
• Bibliothèque C du projet GNU
• Conçue pour la performance, la conformité aux normes et la portabilité
• Présente sur tous les systèmes hôtes GNU/Linux
• Bien sûr, activement entretenue
• Par défaut, assez volumineuse pour les petits systèmes embarqués. Sur
armv7hf, version 2.31 : libc : 1,5 Mo, libm : 432 Ko
20/10/2025 Faten BELLAKHDHAR 10
Chapitre 1
uClibc-ng
• Une continuation du vieux projet uClibc, sous licence LGPL Bibliothèque C
• légère pour les petits systèmes embarqués
Grande configurabilité :
Prend en charge la plupart des architectures embarquées,
Aucune compatibilité binaire garantie.
Certaines fonctionnalités peuvent être mises en œuvre plus tard que
dans glibc
Accent mis sur la taille (RAM et stockage) plutôt que sur les
performances
Taille sur armv7hf, version 1.0.34 : libc : 712 Ko, source
20/10/2025 Faten BELLAKHDHAR 11