La compilazione

Dopo aver salvato il file sorgente si usi il comando gcc per compilare il programma.

Il comando più compatto per compilare il programma è:

gcc -Wall hello.c

In questo modo il compilatore genera un file eseguibile di nome standard chiamato a.out, che può essere eseguito con il comando

./a.out

L'opzione -Wall, che sta per Warning all, ovvero "tutti gli avvertimenti", istruisce il compilatore a generare tutti i possibili messaggi di avvertimento. Alcuni messaggi, infatti, normalmente non vengono generati. Pertanto è consigliabile utilizzare sempre l'opzione -Wall per ottenere maggiori informazioni riguardo a possibili problemi del programma.

Per completezza di informazione, si tenga presente che -Wall è opzionale. Questo significa che anche il comando (senza -Wall)

gcc hello.c

può essere usato per la compilazione, ma produce un numero più limitato di messaggi di avvertimento.

ATTENZIONE: per eseguire una versione modificata del programma, oltre a salvare il programma su disco, bisogna sempre ri-compilare il sorgente, altrimenti si eseguirà la versione compilata precedentemente.

Scelta del nome del file eseguibile

L'opzione del compilatore -o (segno meno seguito da 'o' minuscola) permette di indicare al compilatore il nome del file da generare.

ATTENZIONE: l'opzione del compilatore -o deve essere seguita dal nome del file eseguibile da generare sulla linea di comando.

Il comando di compilazione

gcc -Wall -o hello hello.c

genera un file di output chiamato hello, che può essere eseguito con

./hello

NOTA: ovviamente si potrebbe scegliere un nome qualsiasi per il file di output, per esempio:

gcc -Wall -o eseguibile hello.c

per eseguirlo con

./eseguibile

Precauzione nell'uso dell'opzione -o

Il compilatore considera il file hello.c come file di input, e il file hello come file di output.

Pertanto, se la compilazione va a buon fine, il file hello viene creato oppure, se già ne esiste uno, viene sovrascritto.

Quindi, il seguente comando di compilazione (o sue varianti)

gcc -Wall -o hello.c hello.c

nel quale dopo il -o è presente hello.c è errato e potenzialmente molto pericoloso, perché dice al compilatore che il file di output è hello.c. Quindi il compilatore SOVRASCRIVE il file hello.c, causando la perdita del suo contenuto.

Se il file è ancora aperto nell'editor, allora questo può essere nuovamente salvato, ma se l'editor è stato chiuso, allora il contenuto del file sorgente hello.c viene perduto!