SelfLinux Programmierung Bibliotheken Abschnitt 5 | SelfLinux-0.13.0

| Bibliotheken | Autor Formatierung GFDL

#### 7 Werkzeuge

Es folgen Kurzbeschreibungen einiger Werkzeuge, die speziell auf die Arbeit mit Bibliotheken zugeschnitten sind.

#### 7.1 ld-linux.so

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.

#### 7.2 ldconfig

Dieses ebenfalls bereits oben beschriebene Werkzeug erstellt die Cache-Datei für den Programmlader. ldconfig ist statisch gebunden.

#### 7.3 ldd

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.

#### 7.4 nm

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

#### 8 Literatur

Details zu den Programmen finden sich in den entsprechenden Manpages. Die Manpage zu ld-linux.so heißt unter Umständen kurz ld.so.

David A. Wheeler schrieb das Program Library HOWTO, das von Christoph Schönfeld ins Deutsche übersetzt wurde. Dieses beschreibt Bibliotheken aus Entwicklersicht und zeigt, wie man Bibliotheken erstellt (siehe auch http://www.dwheeler.com/program-library/)