Moeglichkeiten zur Benutzung von dynamischen Bibliotheken
Existiert sowohl eine dynamische wie auch eine statische Bibliothek zu einem Namen wie z. B.:
1 $ ls /usr/lib/libc.*
2 /usr/lib/libc.a /usr/lib/libc.so
so bindet der Linker automatisch die dynamische Bibliothek dazu, wenn er keine anderen Anweisungen
enthaelt. Neben diesem einfachen Dazubinden von dynamischen Bibliotheken beim Linken, gibt es noch
drei weitere Moeglichkeiten, dynamische Bibliotheken zu benutzen.
1. Benutzen von nicht installieren Bibliotheken
Startet man ein Programm, das dynamische Bibliotheken benutzt, versucht der dynamische Lader in dem
Cache fuer Bibliotheken (/etc/ld.so.conf), der durch den Aufruf von ldconfig unter Zuhilfename der
Datei /etc/ld.so.conf (enthaelt die Directories fuer dynamische Bibliotheken) erzeugt wurde, die vom
Programm benutzten Bibliotheken zu finden. Ist jedoch die Environment-Variable LD_LIBARY_PATH
gesetzt, werden zuerste die darin enthaltenen Directories, die wie bei PATH mit Doppelpunkt
voneinander zu trennen sind, durchsucht, bevor der Cache herangezogen wird.
So ist es moeglich, das man mit anderen Versionen von dynamischen Bibliotheken arbeitet, als die,
welche instaliert sind. Dies mag z. B. notwendig sein, wenn man aeltere Programmversionen hat, die
nicht mit einer neu installierten dynamischen Bibliothek ablauffaehig sind, dafuer aber mit einer
aelteren Version dieser dynamischen Bibliothek. In diesem Fall kopiert man die aeltere Version in
ein bestimmtes Directorie und setzt vor dem Programmstart die Environment-Variable
LD_LIBARY_PATH entsprechend. Man kann auch ein Shellscript erstellen, dass wie folgt aussehen
kann:
1 #!/bin/sh
2 export LD_LIBARY_PATH=alt_bibl_dir:$LD_LIBARY_PATH
3 exec alt_programm $*
Fuer alt_bibl_dir ist das Directory anzugeben, in dem sich die aeltere Version der
dynamischen Bibliothek befindet und fuer alt_programm ist der Name des zu startenden
Programms anzugeben.
Zurueck || Index || Vor