Il Makefile
è la chiave del processo di compilazione. Nella
sua forma più semplice, un Makefile è uno script per la
compilazione, o building, dei "binari", le parti eseguibili di un pacchetto.
Il Makefile può anche fornire un mezzo per aggiornare un pacchetto
software senza dover ricompilare ogni singolo file sorgente in esso, ma
questa è un'altra storia (o un altro articolo).
Ad un certo punto, il Makefile lancia cc
o gcc
. Questo
in realtà è un preprocessore, un compilatore C (o C++), ed un
linker, invocati in quell'ordine. Questo processo converte il sorgente nei
binari, i veri eseguibili.
L'invocazione di make di solito richiede solo di battere make. Ciò, generalmente, serve a compilare tutti i file eseguibili necessari per il pacchetto in questione. Tuttavia, make può svolgere anche altri compiti, come installare i file nelle loro directory appropriate (make install) e rimuovere i file oggetto stantii (make clean). L'esecuzione di make -n permette di vedere un'anteprima del processo di compilazione, poiché stampa tutti i comandi che sarebbero attivati da un make, ma senza in effetti eseguirli.
Solo i software più semplici usano un Makefile generico. Le
installazioni più complesse richiedono un Makefile su misura secondo
la posizione delle librerie, dei file include e delle risorse sulla vostra
specifica macchina. Questo, in particolare, è il caso che si ha quando
durante il processo di compilazione servono le librerie X11
per
l'installazione. Imake e xmkmf adempiono questo compito.
Un Imakefile
è, per citare la pagina di manuale, un
"prototipo" di Makefile. L'utilità imake costruisce un Makefile adatto
al vostro sistema dall'Imakefile. Nella maggior parte dei casi, tuttavia,
preferirete eseguire xmkmf, uno script shell che invoca imake,
un suo front end. Controllate il file README o INSTALL incluso
nell'archivio per istruzioni specifiche (se, dopo aver estratto
dall'archivio i file sorgenti, è presente un file Imake
nella
directory base, è un chiaro segno che dovrebbe essere eseguito
xmkmf). Leggere le pagine di manuale di Imake
e
xmkmf
per una più dettagliata analisi della procedura.
È bene essere consapevoli che xmkmf
e make
potrebbero
dover essere invocati come root, specialmente nel fare un make install
per spostare i binari sulle directory /usr/bin
o
/usr/local/bin
. Usare make come utente normale, senza privilegi di
root, porterà probabilmente a dei messaggi d'errore tipo write access
denied (accesso in scrittura negato), perché manca il permesso per
la scrittura nelle directory di sistema. Controllate anche che i binari creati
abbiano i giusti permessi di esecuzione per voi ed ogni altro utente
appropriato.
Quando viene invocato, xmkmf usa il file Imake
per
costruire il Makefile appropriato per il vostro sistema. Sarete
soliti invocare xmkmf con l'argomento -a, per effettuare
automaticamente make Makefiles, make includes e
make depend. Ciò imposta le variabili e definisce le posizioni
delle librerie per il compilatore ed il linker. A volte, non ci
sarà il file Imake
, ci sarà invece uno script
INSTALL
o configure
, che dovrebbe essere invocato come
./configure per assicurarsi che venga chiamato il giusto script
configure
. Nella maggior parte dei casi, il file README
incluso con la distribuzione spiegherà la procedura di installazione.
È di solito una buona idea guardare dentro il Makefile
che
xmkmf
, o uno degli script di installazione, costruiscono. Il
Makefile sarà di solito adatto per il vostro sistema, ma
occasionalmente potrebbe essere necessario "ritoccarlo" o correggere
manualmente degli errori.
Per installare i binari appena compilati nelle appropriate directory di
sistema di solito basta eseguire, come root, make install.
Solitamente, le directory per i binari del sistema sulle moderne
distribuzioni Linux sono /usr/bin
, /usr/X11R6/bin
, e
/usr/local/bin
. La directory da preferire per i nuovi pacchetti
è /usr/local/bin
, poiché in tal modo si terranno
separati i binari che non fanno parte della installazione Linux originale.
I pacchetti originariamente mirati per versioni commerciali di UNIX
potrebbero provare ad installarsi in /opt
o in un'altra directory
sconosciuta. Ciò, naturalmente, causerà un errore di
installazione se la directory in questione non esiste. Il modo
più semplice per risolvere questo problema è quello di creare,
come root, una directory /opt
, lasciare che il pacchetto vi si
installi, e poi aggiungere tale directory alla variabile d'ambiente
PATH
. Oppure, potete creare dei link simbolici alla directory
/usr/local/bin
.
La procedura di installazione generale sarà quindi:
README
ed altri file di documentazione
appropriati.INSTALL
o
configure
.Makefile
.
Note:
Makefile
standard
incluso nel (o creato col) pacchetto che state installando delle
opzioni di ottimizzazione aggiuntive. Alcune di tali opzioni, le più usate, sono -O2,
-fomit-frame-pointer, -funroll-loops e -mpentium
(se usate un processore Pentium). Siate cauti e fatevi guidare dal buon senso
quando modificate un Makefile
!
/coll
e /pack
.
Potreste dover scaricare il Pack-Collection dal suddetto sito
qualora vi capiti di imbattervi in una di tali distribuzioni.