C/Compilatore e precompilatore/Compilatore
Wikibooks, manuali e libri di testo liberi.
- Il linguaggio
- Variabili, operatori e costanti
- Blocchi e funzioni
- Vettori e puntatori
- Stringhe
- Enumerazioni, strutture e unioni
- Lettura e scrittura su file
- Compilatore e precompilatore
- Compilatore
- Istruzioni al precompilatore
- File di header
- Gestione della memoria
- Le applicazioni CGI
- Approfondimenti
- Appendice
- Bibliografia
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 e' 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.
In Linux c'è il compilatore gcc (Gnu C Compiler). Per compilare il file hello.c ad esempio useremo:
gcc -o hello hello.c
Questo comando genera direttamente un eseguibile. Oltre ad eseguire la compilazione vera e propria, gcc si preoccuperà di richiamare il precompilatore (nei sistemi GNU: cpp) e il linker (ld nella suite GNU).
Gcc inoltre, ha numerosissime opzioni di compilazione tra cui:
- -c indica a gcc di non richiamare il linker. Si otterrà quindi un file oggetto (.o).
- -o nomefile indica a gcc che il file risultante deve chiamarsi con il nome che segue l'opzione -o
- -g indica che devono essere incluse nel file oggetto anche i simboli di debug che vengono utilizzati, ad esempio, da debugger come gdb

