Nächste Vorhergehende Inhalt

5. Die GNU C Bibliothek

Das nächste was passiert, wenn Ihr Computer startet ist, das init geladen wird und läuft. Jedoch, init, wie fast alle Programme, benutzen Funktionen aus Bibliotheken.

Vielleicht haben Sie mal ein C Programm wie dieses gesehen:

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

Das Programm beinhaltet keine Definition für printf, also woher kommt dies? Es kommt von den Standard C Bibliotheken, auf einem GNU/Linux System ist das, glibc. Wenn Sie es unter Visual C++ kompillieren, dann kommt es von einer Microsoft Implementation der gleichen Standard Funktionen. Es gibt Zillionen dieser Standard Funktionen, für Berechnungen, Zeichenketten, Datums/Zeit Speicher Zuweisung und so weiter. Alles in Unix (Linux eingeschlossen) ist entweder in C geschrieben oder hat vorzugeben das es so ist. So benutzt alles diese Funktionen.

Wenn Sie auf Ihrem Linux System in /lib nachsehen, werden Sie einer Menge Dateien, wie libsomething.so oder libsomething.a etc finden. Das sind Bibliotheken dieser Funktionen. Glibc ist nur die GNU Implementation dieser Funktionen.

Es gibt zwei Wege, wie Programme diese Bibliotheksfunktionen benutzen können. Wenn Sie ein Programm statisch linken, werden diese Funktionen in die ausführbare Datei kopiert, welche erzeugt wird. Das ist, wozu die libsomething.a Bibliotheken sind. Wenn Sie ein Programm dynamisch linken (und das ist der Standard), ruft ein Programm wenn es läuft den Bibliotheks Code aus der Datei libsomething.so auf.

Das Kommando ldd ist Ihr Freund, wenn Sie herausfinden wollen welche Bibliotheken von einem bestimmten Programm benötigt werden. Zum Beispiel, hier sind die Bibliotheken welche die bash benutzt:

        [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 Konfiguration

Einige der Funktionen hängen auch davon ab, wo Sie leben. Zum Beispiel, in Australien schreiben wir das Datum als dd/mm/yy, aber Amerikaner schreiben das Datum mm/dd/yy. Es gibt ein Programm das mit der glibc Distribution kommt genannt localedef welches es Ihnen ermöglicht dieses einzustellen.

5.2 Übungen

Benutzen Sie ldd um heraus zu finden welche Bibliotheken Ihre Lieblingsanwendung benötigt.

Benutzen Sie ldd um heraus zu finden welche Bibliotheken init benutzt.

Erstellen Sie eine Bibliothek zum Spielen, mit einer oder zwei Funktionen darin. Das Programm ar wird benutzt um diese zu erzeugen. Die Hilfeseite für ar ist ein guter Platz, um heraus zu finden, wie das gemacht wird. Schreiben, kompilieren und linken Sie ein Programm das diese Bibliothek benutzt.

5.3 Mehr Informationen


Nächste Vorhergehende Inhalt