2 Vorladen von dynamischen Bibliotheken


Manchmal moechte man nicht eine ganze dynamische Bibliothek, sondern nur einige Funktionen ersetzen. Da der dynamische Lader nach Funktionen sucht, indem er bei der ersten geladenen Bibliothek beginnt und dann in den anderen Bibliotheken in der Reihenfolge fortfaehrt, in der diese geladen wurden, reicht es zunaechst aus, nur eine neue Bibliothek zu laden, die nur die neuen Funktionen enthaelt, die zu ersetzen sind.
Ein Beispiel hierzu ist die Bibliothek zlibc, die Funktionen, welche von der C-Bibliothek zur Dateibearbeitung angebogen werden, durch eigene Funktionen ersetzt, die mit komprimierten Dateien arbeiten koennen, Wird eine Datei geoeffnet, sucht zlibc sowohl nach der angegebenen Datei als auch nach einer mit gzip gepackten Version dieser Datei. Findet es die angegebenen ungepackte Datei, verhaelt sich die entsprechende Funktion genauso wie die Version dieser Funktion in der C-Bibliothek. Existiert die angegebene Datei aber nicht, dafuer aber eine gepackte Version dieser Datei, entpackt sie diese, ohne dass sich das aufrufende Programm darum muss. Um eine Bibliothek vorzuladen, gibt es zwei Moeglichkeiten:

1.) Setzen der Environment-Variable LD_PRELOAD
1 $ LD_PRELOAD=/lib/vorlad.o exec /bin/programm $*
2.) Eintragen der vorzuladenden Objectdateien in die Datei /etc/ld.so.preload. Fuer die Bibliothek zlibc koennte die folgende Zeile in die Datei /etc/ld.so.preload eingetragen werden:
/lib/uncompress.o


Zurueck || Index || Vor