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 W
arning 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!