1.**Précompilation: **`gcc` appelle `cpp`, le préprocesseur qui effectue de la substitution de texte (`#define`, `#include`, macros, ...) et génère le code `C` à compiler, portant l'extension `.i` (`prog.i`).
2.**Compilation assembleur: **`gcc` compile le code C en code assembleur, portant l'extension `.s` (`prog.s`).
3.**Compilation code objet: **`gcc` appelle `as`, l'assembleur, qui compile le code assembleur en code machine (code objet) portant l'extension `.o` (`prog.o`).
4.**Édition des liens: **`gcc` appelle `ld`, l'éditeur de liens, qui lie le code objet avec les librairies et d'autres codes objet pour produire l'exécutable final (`prog`).
Les différents codes intermédiaires sont effacés.
# Génération d'un exécutable (2/N)
{#fig:compilation width=100%}