プログラムをC言語で書いても、コンピュータはプログラムをそのまま実行するわけではありません。C言語で書かれたプログラムはコンピュータが理解できる言語(機械語)に変換する必要があります。この変換プログラムのことをコンパイラ(compiler)といいます。
C言語で書かれたプログラム(ファイル)
↓
<C言語のプリプロセッサ>
↓
マクロ展開されたプログラム(ファイル)
↓
<Cコンパイラ(狭い意味で)>
↓
アセンブリ言語のプログラム(ファイル)
↓
<アセンブラ>
↓
コンピュータが認識できる言語(データファイル) & システムライブラリ(データファイル)
↓
<リンカ(リンクを行うプログラム)>
↓
実行可能なファイル(データファイル)
機械語