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).
|
|