Es folgen Kurzbeschreibungen einiger Werkzeuge, die speziell
auf die Arbeit mit Bibliotheken zugeschnitten sind.
Der Programmlader oder Dynamische Linker wurde oben bereits
beschrieben. Er ist dafür zuständig, die von einem Programm
benötigten Bibliotheken zu laden und zu binden.
|
Dieses ebenfalls bereits oben beschriebene Werkzeug erstellt die
Cache-Datei für den Programmlader. ldconfig ist
statisch gebunden.
|
Dieses Werkzeug zeigt an, ob und welche gemeinsam benutzbaren
Bibliotheken ein Programm verwendet. Es gibt die Abhängigkeiten
dieser aus. ldd ist statisch gebunden.
Mit ldd kann man sich anzeigen lassen, welche Bibliotheken in
welchen Versionen ein Programm verwendet. Dabei verwenden fast
alle Programme mindestens den Programmlader /lib/ld-linux.so.2
und die Lib-C /lib/libc.so.6. Komplexe Programme verwenden
oft 10 und mehr Bibliotheken (z.B. xterm). Mit ldd kann man
erkennen, ob ein Programm direkt gegen Versionen gelinkt ist,
oder ob es überhaupt dynamisch gebunden wird. Betrachten Sie
die folgenden Kommandos:
user@linux ~$
ldd /lib/ld-linux.so.2
statically linked
user@linux ~$
ldd /sbin/ldconfig
not a dynamic executable
|
ldd zeigt auch, welche Bibliotheken von Bibliotheken
verwendet werden, so ist zum Beispiel die Mathematikbibliothek
/lib/libm.so.6 gegen libc.so.6 gelinkt.
|
nm zeigt die Symbole (also Funktionen und Variablen) an,
welchen eine Bibliothek anbietet. Das sind zum einem die
Symbole, die eine Bibliothek bereitstellt (exportierte
Funktionen) und zum anderen die, die sie verwendet (importiert).
nm -u zeigt die Symbole an, die eine Bibliothek
benötigt, und nm -g die, die exportiert werden. Dies
kann man sich gut am Beispiel libm.so anschauen.
nm -u /lib/libm.so.6 zeigt beispielsweise, dass libm
die Standardfehlerausgabe "stderr" aus der libc verwendet und
nm -g /lib/libm.so.6 zeigt, dass
eine Funktion "tan" bereitgestellt wird (die den Tangens berechnet).
|
|