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