table of contents
ldd(1) | General Commands Manual | ldd(1) |
BEZEICHNUNG¶
ldd - Abhängigkeiten von Laufzeit-Bibliothek ausgeben
ÜBERSICHT¶
ldd [Option]… Datei…
BESCHREIBUNG¶
ldd gibt die Laufzeit-Bibliotheken (dynamischen Bibliotheken) aus, die von jedem auf der Befehlszeile angegebenen Programm oder jeder Laufzeit-Bibliothek benötigt werden. Eine beispielsweise Verwendung und Ausgabe ist folgende:
$ ldd /bin/ls
linux-vdso.so.1 (0x00007ffcc3563000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
/lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)
Im Normalfall ruft ldd den dynamischen Linker (siehe ld.so(8)) mit auf 1 gesetzter Umgebungsvariablen LD_TRACE_LOADED_OBJECTS auf. Dadurch untersucht der dynamische Linker die dynamischen Abhängigkeiten des Programms und findet (entsprechend der in ld.so(8) beschriebenen Regeln) die Objekte, die diese Abhängigkeiten erfüllen und lädt sie. Für jede Abhängigkeit zeigt ldd den Ort des passenden Objektes und die (hexadezimale) Adresse an, an der es geladen wird. (Die dynamischen Bibliotheken linux-vdso und ld-linux sind besonders; siehe vdso(7) und ld.so(8).)
Sicherheit¶
Beachten Sie, dass unter bestimmten Bedingungen (z.B. wenn das Programm einen von ld-linux.so verschiedenen ELF-Interpreter festlegt) einige Versionen von ldd versuchen könnten, die Abhängigkeitsinformationen zu erhalten, indem sie versuchen, das Programm direkt ausführen, was dazu führen könnte, dass beliebiger, im ELF-Interpreter des Programms und möglicherweise sogar im Programm selbst vorhandener Code ausgeführt wird. (Vor Glibc 2.27 hat die Implementierung von ldd der Originalautoren dies beispielsweise selbst durchgeführt, wobei allerdings die meisten Distributionen eine veränderte Version bereitstellten, die dies nicht machte.)
Daher sollten Sie niemals ldd auf nicht vertrauenswürdigen Programmen anwenden, da dies zur Ausführung beliebigen Codes führen könnte. Eine sichere Alternative für unvertrauenswürdige Programme ist:
$ objdump -p /Pfad/zu/Programm | grep NEEDED
Beachten Sie allerdings, dass diese Alternative nur die direkten Abhängigkeiten des Progamms zeigt, während ldd den gesamten Abhängigkeitsbaum des Programms zeigt.
OPTIONEN¶
- --version
- Gibt die Versionsnummer von ldd aus.
- --verbose
- -v
- Gibt alle Informationen aus, schließt beispielsweise Symbolversionierungsinformationen mit ein.
- --unused
- -u
- Gibt alle unbenutzten direkten Abhängigkeiten aus. (Seit Glibc 2.3.4.)
- --data-relocs
- -d
- Führt Umplatzierungen durch und berichtet alle fehlenden Objekte (nur ELF).
- --function-relocs
- -r
- Führt Umplatzierungen für sowohl Datenobjekte als auch Funktionen durch und berichtet alle fehlenden Objekte oder Funktionen (nur ELF).
- --help
- Hinweise zur Verwendung.
FEHLER¶
ldd funktioniert mit dynamischen Bibliotheken im Format a.out nicht.
ldd funktioniert mit einigen extrem alten a.out-Programmen nicht, die gebaut wurden, bevor die Unterstützung von ldd zu den Compiler-Veröffentlichungen hinzugefügt wurde. Falls Sie ldd mit einem dieser Programme verwenden, wird das Programm versuchen, sich mit argc = 0 auszuführen und die Ergebnisse werden nicht vorhersehbar sein.
SIEHE AUCH¶
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
2. Mai 2024 | Linux man-pages (unveröffentlicht) |