Avanti Indietro Indice

5. La libreria GNU C

Il passo successivo all'accensione del computer consiste nel caricamento e nella esecuzione di init. Comunque, init, come la maggior parte dei programmi, utilizza delle funzioni di libreria.

Potreste aver già visto un esempio di programma C come questo:

        main() {
                printf("Hello World!\n");
        }

Il programma non contiene nessuna definizione della funzione printf, e quindi da dove salta fuori? Questa proviene dalle librerie standard C che, su un sistema GNU/Linux, si chiamano glibc. Se compilate il programma sotto Visual C++, allora quella funzione viene da una implementazione Microsoft delle stesse funzioni standard. Esistono milioni di queste funzioni standard, per matematica, stringhe, allocazione di memoria per data e ora, e così via. Qualsiasi cosa in Unix (incluso Linux) è stata scritta scritta in C, perciò ogni applicazione utilizza queste funzioni.

Se guardate nella directory /lib del vostro sistema Linux troverete molti file chiamati libqualcosa.so o libqualcosa.a, ecc. Sono le librerie di queste funzioni. Glibc è esattamente l'implementazione GNU di queste funzioni.

Ci sono due modi in cui i programmi possono utilizzare queste le funzioni di libreria. Se linkate il programma in modo statico, queste funzioni di libreria verranno copiate dentro l'eseguibile che viene creato. Le librerie libqualcosa.a servono a questo. Se invece linkate il programma in modo dinamico (e questa è la modalità predefinita), quando il programma sarà in esecuzione e avrà bisogno del codice della libreria, questo verrà chiamato dal file libqualcosa.so.

Il comando ldd farà al caso vostro quando vorrete sapere quali librerie sono necessarie ad un particolare programma. Per esempio, ecco le librerie utilizzate da bash:

        [greg@Curry power2bash]$ ldd /bin/bash
                libtermcap.so.2 => /lib/libtermcap.so.2 (0x40019000)
                libc.so.6 => /lib/libc.so.6 (0x4001d000)
                /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

5.1 Configurazione

Alcune funzioni delle librerie dipendono dal posto in cui vivete. Per esempio, in Australia scriviamo le date nel formato dd/mm/yy (NdT: giorno/mese/anno, come in Italia), ma in America viene usato il formato mm/dd/yy. Esiste un programma che viene fornito con le glibc, chiamato localedef, che consente di configurare le localizzazioni.

5.2 Esercizi

Usate ldd per scoprire quali librerie utilizzano le vostre applicazioni preferite.

Usate ldd per scoprire quali librerie sono utilizzate da init.

Createvi una libreria giocattolo, con una o due funzioni. Per crearla utilizzate il programma ar. La pagina di manuale di ar può essere un buon punto di inizio per capire come fare. Scrivete, compilate e linkate un programma che faccia uso di questa vostra libreria.

5.3 Maggiori Informazioni


Avanti Indietro Indice