` insèrent le contenu des fichiers d'en-tête de bibliothèque standard dans votre code.
* Extension des macros : Les macros définies à l'aide de `#define` sont remplacées par leurs définitions.
* Compilation conditionnelle : Des directives comme `#ifdef` contrôlent quelles parties du code sont compilées en fonction de conditions.
Le résultat de cette étape n’est pas directement lisible par l’homme ; c'est une version modifiée de votre code source.
3. Compilation :
Le compilateur (`gcc`) traduit le code prétraité en langage assembleur, spécifique à l'architecture du processeur cible (par exemple, x86-64). Ce code assembleur représente votre programme sous une forme de bas niveau que l'ordinateur peut comprendre plus directement.
4. Assemblage :
L'assembleur (`as`) convertit le code assembleur en code objet. Les fichiers objets (généralement avec une extension « .o », par exemple « monprogramme.o ») contiennent des instructions machine mais ne sont pas encore entièrement exécutables car ils peuvent dépendre d'autres fichiers objets ou bibliothèques.
5. Lien :
L'éditeur de liens (`ld`) combine le code objet de votre programme avec les bibliothèques nécessaires (comme la bibliothèque C standard, `libc`) pour créer un seul fichier exécutable. Cela implique de résoudre les références entre différentes parties du code et d’incorporer les fonctions de bibliothèque requises.
La commande de compilation :
La commande typique pour compiler un programme C dans CentOS à l'aide de GCC est :
```bash
gcc monprogramme.c -o monprogramme
```
* `gcc` :appelle le compilateur GCC.
* `myprogram.c` :Spécifie le fichier de code source.
* `-o monprogramme` :Spécifie le nom du fichier exécutable de sortie. S'il est omis, le nom de l'exécutable par défaut sera « a.out ».
Exemple :
Disons que vous avez `myprogram.c` :
```c
#include
int main() {
printf("Bonjour tout le monde !\n");
renvoie 0 ;
}
```
Vous le compileriez et l'exécuteriez comme ceci :
```bash
gcc monprogramme.c -o monprogramme
./monprogramme
```
Cela produira un fichier exécutable nommé « monprogramme », que vous pourrez ensuite exécuter à partir de la ligne de commande. Le résultat sera "Bonjour tout le monde !".
Compilation plus avancée :
* Fichiers sources multiples : Si votre programme est réparti sur plusieurs fichiers `.c`, vous pouvez tous les compiler en même temps :
```bash
gcc fichier1.c fichier2.c -o monprogramme
```
* Optimisation : Des indicateurs comme « -O2 » (optimisation de niveau 2) peuvent améliorer les performances de votre exécutable.
```bash
gcc monprogramme.c -o monprogramme -O2
```
* Débogage : L'indicateur `-g` ajoute des informations de débogage à l'exécutable, facilitant l'utilisation d'un débogueur comme `gdb`.
```bash
gcc monprogramme.c -o monprogramme -g
```
En résumé, la compilation d'un programme C dans CentOS implique une série d'étapes orchestrées par la chaîne d'outils GCC, transformant votre code lisible par l'homme en un programme exécutable par machine. Comprendre ces étapes peut vous aider à diagnostiquer les erreurs de compilation et à optimiser votre processus de génération.