LPIC101/102.3 Shared Libraries verwalten
wichtung:1
Beschreibung: Kandidaten sollten in der Lage sein, die Shared Libraries zu bestim-men, von denen ausführbare Programme abhängen, und diese bei Bedarf zu instal-lieren.
Wichtigste Wissensgebiete
- Shared Libraries identifizieren
- die typischen Orte für Systembibliotheken identifizieren
- Shared Libraries laden
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
- ldd
- ldconfig
- /etc/ld.so.conf
- LD_LIBRARY_PATH
Allgemeines
Um Systemressourcen effizient zu verwenden, werden Programme modular aufgebaut. Die eigentliche Aufgabe,die das Programm ausführt, wird im Code des jeweiligen Programms selbst hinterlegt.Funktionen,die andere Programme auch verwenden, werden dynamisch in das laufende Programm eingebunden. Solche Funktionen sind in sogenannten Libraries enthalten.Es wäre z. B. nicht sinnvoll,wenn jedes Programm seine eigene Druckroutine enthalten würde. Stattdessen bindet ein Programm, wenn es drucken muss, dynamisch eine Bibliothek ein, die dann
diese Aufgabe ausführt. Durch diese Vorgehensweise werden Speicherressourcen eingespart. Unter Windows finden Sie diese Bibliotheken als Dateien mit der Erweiterung.dll(Dynamic Link Library). Unter Linux heißen die Bibliotheken Shared Libra-ries und haben die Erweiterung.so(SharedObject).Programme, die mit solchen Shared Libraries arbeiten, bezeichnet man als dynami-cally linked, während Programme, die den Code der Shared Libraries in sich selbst tragen, als statically linkedbezeichnet werden.
Verwaltung von Shared Libraries
Um zu identifizieren, von welchen Libraries ein Programm abhängt, können Sie dasTool ldd verwenden. Die Ausgabe des Programms zeigt gleichzeitig die Position der benötigten Libraries im Dateisystem an:
archangel:/ # ldd /usr/bin/grep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/libc.so.6 (0x40030000) /lib/ld-linux.so.2 (0x40000000)
Wenn Sie neue Bibliotheken auf einem System installieren, benötigen Sie das Programm ldconfig,damit der dynamische Linker diese Bibliotheken auch verwendet. Zu diesem Zweck liest ldconfig die Datei /etc/ld.so.confbzw. alle conf-Dateien im Verzeichnis /etc/ld.so.conf.d ein. Hier sind alle Verzeichnisse aufgelistet, in denen sichdynamische Libraries befinden: archangel:/ # less /etc/ld.so.conf
/usr/X11R6/lib /usr/i486-linux/lib /usr/i486-linux-libc5/lib=libc5 /usr/i486-linux-libc6/lib=libc6 /usr/i486-linuxaout/lib /usr/i386-suse-linux/lib /usr/local/lib
Diese Verzeichnisse werden von ldconfig
konsultiert, um die Datei
/etc/ld.so.cache aufzubauen. Danach können die neuen Libr aries vom dynamische n Linker verwen- det und bei Bedarf eingebunden werden. Um den aktuellen Inhalt der Datei /etc/ld.so.cache
anzuzeigen, verwenden Sie folgen-
des Kommando: archangel:/ # ldconfig -p | less 1128 libs found in cache `/etc/ld.so.cache' libzvbi.so.0 (libc6) => /usr/lib/libzvbi.so.0 libzio.so.0 (libc6) => /usr/lib/libzio.so.0 libzio.so (libc6) => /usr/lib/libzio.so libz.so.1 (libc6) => /lib/libz.so.1 libz.so.1 (libc6) => /usr/lib/libz.so.1 libz.so (libc6) => /usr/lib/libz.so liby2.so.2 (libc6) => /usr/lib/liby2.so.2 libyui.so.2 (libc6) => /usr/lib/libyui.so.2 ... weitere Zeilen wurden abgeschnitten ...