|
Dans le contexte d'un logiciel système, « triple » fait généralement référence à un identifiant en trois parties spécifiant l'architecture du système cible, le système d'exploitation et l'implémentation de la bibliothèque standard C++. . Il est principalement utilisé dans les systèmes de construction (comme CMake, Meson et autres) et les compilateurs pour identifier de manière unique l'environnement pour lequel le logiciel doit être compilé.
Les trois parties sont :
* Architecture (ou cible) : Ceci spécifie l'architecture du processeur (par exemple, x86_64, armv7, aarch64, riscv64). Il dicte le jeu d’instructions que le code compilé utilisera.
* Système d'exploitation (ou fournisseur) : Ceci identifie le système d'exploitation (par exemple, Linux, Windows, Macos, Freebsd). Cela influence la façon dont le programme interagit avec les ressources du système (fichiers, mémoire, etc.).
* Bibliothèque standard C++ (ou ABI) : Ceci spécifie l'implémentation de la bibliothèque standard C++ (par exemple, libstdc++ pour GCC, libc++ pour Clang). Il détermine l'ABI (Application Binary Interface), qui régit la manière dont le code compilé interagit avec la bibliothèque standard. Différentes implémentations peuvent avoir des ABI incompatibles, même sur la même architecture et le même système d'exploitation.
Exemple :
`x86_64-linux-gnu`
* x86_64 : Architecture x86 64 bits.
* Linux : Système d'exploitation Linux.
* gnou : Bibliothèque standard GNU C++ (libstdc++)
Autre exemple :
`aarch64-apple-darwin`
* aarch64 : Architecture ARM 64 bits.
* pomme : Le système d'exploitation d'Apple.
* darwin : Le cœur des systèmes d'exploitation d'Apple (macOS, iOS, etc.). Cela implique souvent une implémentation spécifique de la bibliothèque standard C++ utilisée par le compilateur d'Apple.
Le triple permet aux systèmes de build de générer des commandes de compilateur et d'éditeur de liens correctes pour l'environnement cible spécifié. Si vous compilez du code sans tenir compte du triple, l'exécutable résultant risque de ne pas s'exécuter sur le système prévu. La compilation croisée repose fortement sur la triple spécification correcte pour créer du code pour une cible différente de celle de la machine de construction.
|