GCC a toutes sortes d'options pour contrôler son fonctionnement. Voici quelques-uns pertinents:
-nostdlib
Pour omettre de lier aux bibliothèques standard et au code de démarrage-nostdinc
Pour omettre la recherche de fichiers d'en-tête dans les emplacements standard.-ffreestanding
Pour compiler pour un environnement indépendant (comme un noyau)
Vous n'avez pas non plus besoin d'utiliser GCC pour les liens. Vous pouvez invoquer directement le linker, le fournir de votre propre carte de linker, du code d'objet de démarrage et tout ce dont vous avez besoin.
La construction du noyau Linux semble, pour des raisons arbitraires de ne pas utiliser -ffreestanding
, il contrôle cependant l'étape de liaison et garantit que le noyau est lié sans tirer dans aucun code d'espace utilisateur.