Compilazione

I due moduli possono essere compilati indipendentemente (l’opzione -c del comando gcc indica al compilatore di non eseguire il linker, così il risultato sarà il codice oggetto e non l’eseguibile)

gcc -c utile.c

gcc -c vettore.c

gcc -c ordina_array.c

Possibile anche compilarli insieme

gcc -c utile.c vettore.c ordina_array.c

In entrambi i casi si ottengono tre file con estensione .o

Per collegare (link) i tre moduli e produrre l’eseguibile

gcc utile.o vettore.o ordina_array.o -o ordina_array.exe

Possibile compilazione e collegamento in un solo passo

gcc utile.c vettore.c ordina_array.c -o ordina_array.exe

Progetto: Makefile e comando make

Tutti gli ambienti di programmazione consentono di costruire un progetto

Il comando make: compilazione e collegamento dei vari moduli che compongono il progetto

L’ordine delle specifiche non è importante, ma è buona norma inserire come prima specifica quella per la costruzione del programma eseguibile

In questo caso per lanciare il processo basta digitare il comando make

Make dell’esempio

ordina_array.exe: utile.o vettore.o ordina_array.o

gcc utile.o vettore.o ordina_array.o -o ordina_array.exe

utile.o: utile.c

gcc -c utile.c

vettore.o: vettore.c utile.h

gcc -c vettore.c

ordina_array.o: vettore.h ordina_array.c

gcc -c ordina_array.c

Makefile e comando make

Nell’esempio, come effetto del comando make: bisogna produrre ordina_array.exe, ma occorrono utile.o vettore.o ordina_array.o; se i due file non esistono, si creano le specifiche per produrli, e così via

Ordine di esecuzione:

gcc -c utile.c

gcc -c vettore.c

gcc -c ordina_array.c

gcc utile.o vettore.o ordina_array.o -o ordina_array.exe