Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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!