Qwqw
La transformation d’un texte ´ecrit en langage C en un programme ex´ecutable par l’ordinateur se fait en deux
´etapes : la compilation et l’´edition de liens. La compilation est la traduction des fonctions ´ecrites en C en des proc´edures ´equivalentes ´ecrites dans un langage dont la machine peut ex´ecuter les instructions. Le compilateur lit toujours un fichier, appel´e fichier source, et produit un fichier, dit fichier objet.
Chaque fichier objet est incomplet, insuffisant pour ˆetre ex´ecut´e, car il contient des appels de fonctions ou des r´ef´erences `a des variables qui ne sont pas d´efinies dans le mˆeme fichier. Par exemple, le premier programme que vous ´ecrirez contiendra d´ej`a la fonction printf que vous n’aurez certainement pas ´ecrite vous-mˆeme. L’´edition de liens est l’op´eration par laquelle plusieurs fichiers objets sont mis ensemble pour se compl´eter mutuelle- ment : un fichier apporte des d´efinitions de fonctions et de variables auxquelles un autre fichier fait r´ef´erence et r´eciproquement. L’´editeur de liens (ou linker ) prend en entr´ee plusieurs fichiers objets et biblioth`eques (une vari´et´e particuli`ere de fichiers objets) et produit un unique fichier ex´ecutable. L’´editeur de liens est largement ind´ependant du langage de programmation utilis´e pour ´ecrire les fichiers sources, qui peuvent mˆeme avoir ´et´e
´ecrits dans des langages diff´erents.
Chaque fichier source entrant dans la composition d’un programme ex´ecutable est fait d’une succession d’un nombre quelconque d’´el´ements ind´ependants, qui sont :
– des directives pour le pr´eprocesseur (lignes commen¸cant par #),
– des constructions de types (struct, union, enum, typedef),
– des d´eclarations de variables et de fonctions externes,
– des d´efinitions de variables et
– des d´efinitions de fonctions.
Seules les expressions des deux derni`eres cat´egories font grossir le fichier objet : les d´efinitions de fonc- tions laissent leur