Nel tutorial precedente, abbiamo visto una corretta implementazione di un semplice programma C. Vediamo ora come agire operativamente nella compilazione del codice e nella creazione di un eseguibile.

Il modo per eseguire un programma dipende dal sistema operativo che si usa. In questo tutorial vediamo come procedere nei sistemi UNIX.

Il nostro compito si suddivide in 3 fasi principali: editare; preelaborare, compilare e linkare; caricare ed eseguire. Analizziamole una alla volta.

EDITARE
-------
L'editing consiste nella stesura del codice, che avviene in un programma chiamato editor. In UNIX, due editor largamente utilizzati sono il vi e l'emacs. Una volta scritto il codice, esso va salvato con estensione '.c'.
Supponiamo di aver letto il tutorial sulla stesura del typical Hello, World!... Per ottenere un eseguibile, dobbiamo scrivere il codice del programma e salvarlo, ad esempio, con il nome hello.c.

PREELABORARE - COMPILARE - LINKARE
----------------------------------
In UNIX, il comando per compilare è
    cc nomefile
Nel caso del programma Hello, World!, dovremo eseguire il comando
    cc hello.c
al prompt di UNIX.

Per primo, interviene il PREPROCESSORE, che obbedisce alle cosidette direttive del preprocessore. Un esempio di direttive del preprocessore è, nel nostro Hello, World!, la riga
    #include <stdio.h>
con il compito di far includere al preprocessore alcune particolari informazioni della libreria standard del C.

Dopo il preprocessore, entra in gioco il COMPILATORE vero e proprio, che traduce in codice macchina (detto anche "codice oggetto") le istruzioni del nostro programma.

Per ultimo, il LINKER collega il codice oggetto del nostro programma con quello delle funzioni mancanti (printf, nel nostro caso).

Se il codice del programma non contiene errori, il compilatore produce una immagine eseguibile. Nel sistemi UNIX, il file prodotto acquisisce il nome
    a.out
che è l'immagine eseguibile del file hello.c.

CARICARE - ESEGUIRE
-------------------
Prima che il programma possa essere eseguito, esso deve essere caricato dal LOADER, che prende l'immagine eseguibile dal disco e la trasferisce nella memoria. A questo punto, il programma viene eseguito. Per caricare ed eseguire il programma in un sistema UNIX è sufficiente digitare il comando
    a.out
e vedremo visualizzata la stringa
    Hello, World!