C/Compilatore e precompilatore/Compilatore
Un compilatore è un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione.
Il codice oggetto generato da un programma scritto in C è sempre scritto in linguaggio macchina, ovvero istruzioni semplici (a basso livello) che vengono eseguite successivamente dalla CPU.
Un compilatore C solitamente ha funzionalita' di compilazione per altri linguaggi macchina diversi da quello della macchina su cui si sta effettivamente compilando il sorgente.
La compilazione scinde la fase di traduzione delle istruzioni contenute nei file sorgenti da quella di esecuzione. Essa è relativa soltanto alla fase traduzione di un programma in linguaggio macchina ma non è legata in alcun modo alla sua esecuzione. In particolare, la compilazione di un programma si compone di due fasi distinte rappresentate nel seguente schema:
Praticamente dopo la traduzione in codice oggetto avviene il collegamento delle varie parti comprese le librerie per produrre il file eseguibile. In generale il compilatore prevede delle opzioni per dividere le due operazioni in modo da poter fare il collegamento in un secondo tempo e/o modificare solo il codice sorgente di alcune parti del programma e compilare così solo i file oggetto modificati.