2. Librerie statiche

Le librerie statiche sono semplicemente una raccolta di comuni file oggetto; per convenzione, i nomi delle librerie statiche terminano con il suffisso ".a". Una tale raccolta si crea utilizzando il programma ar (dall'inglese archiver). Le librerie statiche non sono più utilizzate tanto spesso quanto in passato, per via dei vantaggi che caratterizzano le librerie condivise (descritte in seguito). Ciononostante, esse vengono ancora talvolta utilizzate, storicamente sono venute prima e sono più semplici da illustrare.

L'utilizzo di librerie statiche ne consente il link a programmi eseguibili senza che ne debba essere ricompilato il codice, risparmiando tempo di compilazione. Si noti che, data la maggiore velocità dei compilatori odierni, il tempo di ricompilazione è divenuto meno determinante, così che questa esigenza non è più tanto sentita quanto in passato. Le librerie statiche sono spesso utili agli sviluppatori che vogliano consentire ad altri programmatori di utilizzarle, ma che non siano intenzionati a distribuire il codice sorgente delle librerie stesse (il che può essere un vantaggio per chi vende una libreria, ma ovviamente non lo è per il programmatore che cerchi di utilizzarla). In teoria, la velocità di esecuzione del codice di una libreria statica prodotta nel formato ELF e incorporata in un programma dovrebbe essere leggermente superiore (di un 1-5%) rispetto a quella di una libreria condivisa o caricata dinamicamente, ma nella pratica questo raramente si verifica per via di altri fattori concomitanti.

Per creare una libreria statica, o per aggiungere ulteriori file oggetto ad una libreria statica esistente, si utilizza un comando simile al seguente:

ar rcs mia_libreria.a file1.o file2.o

Il comando di questo esempio aggiunge il file oggetto file1.o e file2.o alla libreria statica mia_libreria.a, creando mia_libreria.a nel caso in cui quest'ultima non sia già presente. Per ulteriori informazioni riguardo alla creazione di librerie statiche si veda ar(1).

Una volta creata una libreria statica, la si vorrà probabilmente usare. È possibile utilizzare una libreria statica facendovi riferimento durante il processo di compilazione e link di un programma eseguibile. Nel caso in cui, per la creazione dell'eseguibile, si stia utilizzando gcc(1) è possibile allora utilizzare, al fine di specificare la libreria, l'opzione -l; si faccia riferimento a info:gcc per ulteriori informazioni.

Nell'uso di gcc si ponga attenzione all'ordine dei parametri; -l è un'opzione del linker, e deve essere di conseguenza indicata DOPO il nome del file che si intende compilare. Questo aspetto differisce sensibilmente dalla normale sintassi che caratterizza le opzioni. Se si posiziona l'opzione -l prima del nome del file, il link può fallire, producendo messaggi di errore piuttosto criptici.

È inoltre possibile usare il linker ld(1) direttamente, utilizzandone le opzioni -l e -L, ma nella maggior parte dei casi risulta preferibile utilizzare gcc(1) dal momento che l'interfaccia di ld(1) ha maggiori probabilità di subire modifiche.