Beschreibung: Prüfungskandidaten sollten in der Lage sein, Shared Libraries, die von ausführbaren Programmen benötigt werden, zu bestimmen und nötigenfalls zu installieren. Sie sollten ebenfalls fähig sein, anzugeben wo sich die Systembibliotheken befinden.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
So wird jede benötigte Library nur einmal in den Speicher geladen, was gerade in einem System, das viele Programme gleichzeitig geladen hält eine enorme Speichereinsparung bewirkt.
Wenn ein Programm geladen wird, dann muß es eine Instanz geben, die den geschilderten Vorgang startet. Denn das Programm selbst kann das nicht tun, es wird ja erst geladen, wenn die nötigen Libraries auch schon geladen sind. Diese Instanz ist sozusagen der Programmlader oder der sogenannte dynamische Linker und Lader. Der Name dieses Programms ist ld.so.
ld.so läd die shared libraries, die ein Programm benötigt, bereitet dann das Programm entsprechend vor und läd es selbst. Die shared libraries, die das zu ladende Programm benötigt, werden in der folgenden Reihenfolge gesucht:
Ein Linux-Programm wird also von einem speziellen Programmlader (ld.so) geladen, der die notwendigen Libraries gleich mitläd. Aus diesem Grund ist es nötig, daß jedes Programm, das installiert wird, auch die entsprechenden Libraries mitinstalliert bzw. überprüft, ob sie schon installiert sind. Die Verwaltung dieser Libraries obliegt der Systemverwaltung.
ldd /bin/lsDas zu untersuchende Programm muß mit vollem Pfad angegeben werden. Die Ausgabe wäre für unser Beispiel dann etwas in der Art:
librt.so.1 => /lib/librt.so.1 (0x40022000) libc.so.6 => /lib/libc.so.6 (0x40033000) libpthread.so.0 => /lib/libpthread.so.0 (0x4014e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)Daraus geht hervor, daß das Programm ls vom Linker/Loader /lib/ld-linux.so.2 gestartet werden will und die Libraries librt.so.1, libc.so.6 und libpthread.so.0 benötigt. In der rechten Spalte sind die Fundorte der Libraries im Dateisystem zu lesen.
Wenn ein Programm neu installiert wird, so kann mit Hilfe dieses Befehls herausgefunden werden, ob alle Libraries für das Programm existieren oder ob einige nachinstalliert werden müssen.
Die interne Verwaltung der Libraries wird durch den Aufruf des Programms ldconfig vollzogen. Dieses Programm wartet den Library Cache und erstellt automatisch die notwendigen symbolischen Links auf Libraries. Der Librarie-Cache liegt in der Datei /etc/ld.so.cache und enthält eine binär codierte Liste aller dem System bekannten Libraries.
Damit ldconfig diese Datei erstellen kann und auch neu hinzugekommene Libraries dort aufgenommen werden, muß ldconfig wissen, welche Verzeichnisse nach Libraries durchsucht werden sollen. ldconfig durchsucht zunächst die beiden Verzeichnisse /usr/lib und /lib, danach alle Verzeichnisse, die in der Datei /etc/ld.so.conf aufgelistet sind.
Wenn also ein neues Programm foo installiert wird, das seine Shared Libraries im Verzeichnis /usr/local/foo/lib ablegt, so müssen wir nur dieses Verzeichnis in die Datei /etc/ld.so.conf aufnehmen. Nach der Installation neuer Libraries und/oder der Neuaufnahme von Pfaden in der Datei /etc/ld.so.conf muß das Programm ldconfig ausgeführt werden, bevor die neuen Libraries verwendet werden können. Erst nach dem Aufruf von ldconfig stehen sie ja in der Datei /etc/ld.so.cache und sind somit dem Linker/Loader bekannt.