Crt0

Un article de Wikipédia, l'encyclopédie libre.

crt0 (aussi connu comme c0) est un ensemble de routines de démarrage d'exécution liés dans un programme en C qui effectue n'importe quel travail d'initialisation nécessaire avant d'appeler le programme de la fonction principale (la fonction main()).

Il prend généralement la forme d'un fichier objet appelé crt0.o, souvent écrit en langage d'assemblage, qui est incluse automatiquement par l'éditeur de liens dans chaque fichier exécutable qu'il construit[1].

crt0 contient la plupart des éléments de base de l'environnement d'exécution. En tant que tel, le travail qu'il effectue dépend du compilateur, du système d'exploitation et de l'implémentation de la bibliothèque standard du C. En plus du travail d'initialisation requis par l'environnement et la chaîne de compilation, crt0 peut effectuer des opérations supplémentaires définies par le programmeur, telles que l'exécution de constructeurs globaux C++ et des fonctions de C portant l'attribut de GCC((constructeur))[2],[3].

« crt » signifie « C runtime », et le zéro signifie « le commencement ». Toutefois, lorsque les programmes sont compilés à l'aide de GCC, il est également utilisé pour d'autres languages que le C. Différentes versions de crt0 sont disponibles pour des scénarios d'utilisation particuliers; par exemple, le profileur gprof exige de ses programmes soit compilés avec gcrt0[4].

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. « The C Runtime Initialization, crt0.o », sur embecosm.com, (consulté le )
  2. « Program initialization: Creating a C library », sur osdev.org, (consulté le )
  3. « Calling Global Constructors », sur osdev.org, (consulté le )
  4. « Compiling a Program for Profiling: GNU gprof », sur sourceware.org (consulté le )

Liens externes[modifier | modifier le code]