Validierung mit LDD
Unter Linux ist es problemlos möglich zu prüfen, welche dynamischen Funktionsbibliotheken von einem Programm verwendet werden. Dazu kommt das Programm ldd
zum Einsatz. LDD listet alle benötigen dynamischen Funktionsbibliotheken sowie deren Pfad im System auf. Sollte ein Programm aufgrund fehlender Funktionsbibliotheken nicht starten, so zeigt LDD bei der fehlenden Bibliothek "not found" an.
Statisch gelinkte Bibliotheken (.a) werden nicht von LDD angezeigt, da die Trennung zwischen Funktionsbibliothek und Programm beim Linken (Kompilieren) aufgehoben wird. Statische Bibliotheken sind also ein Teil des Programms und müssen daher nicht automatisch nachgeladen werden.
Die Funktionsbibliothek "LibXml2" aus dem Beispiel im letzten Abschnitt zieht automatisch eine Reihe von Funktionsbibliotheken nach. Die Ausgabe von LDD sieht daher wie folgt aus:
>$ ldd demo
linux-vdso.so.1 (0x00007ffe40392000)
libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f882a1c4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8829dd3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8829bcf000)
libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f8829818000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f88295fb000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f88293d5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8829037000)
/lib64/ld-linux-x86-64.so.2 (0x00007f882a787000)
libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f882748e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f882726f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8826ee1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8826cc9000)