Verwendung des Befehls LDD unter Linux
Sie fragen sich, wie Sie den Befehl LDD unter Linux verwenden?
Linux bietet eine große Flexibilität, da Sie Ihr System an Ihre Bedürfnisse anpassen können. Das heißt, Sie können Ihr System einfach über das Terminal bedienen. Darüber hinaus können Sie verschiedene Parameter steuern und die von verschiedenen Programmen auf Ihrem System freigegebenen und verwendeten Dateien überprüfen.
Mit einem Befehl können Sie insbesondere die Bibliotheken erkennen, die von einem bestimmten zu prüfenden Programm verwendet werden. Dies ist der LDD-Befehl, der von Roland McGrath und Ulrich Drepper entwickelt wurde.
LDD (List Dynamic Dependencies) erleichtert dem Benutzer die Identifizierung der Bibliotheksabhängigkeiten, die für verschiedene ausführbare Dateien freigegeben werden.
In diesem Handbuch erfahren Sie, wie Sie den Befehl LDD unter Linux verwenden.
Also ohne weiteres, fangen wir an!
Arten von Bibliotheken.
Eine Bibliothek ist ein genau definierter Satz von Funktionen, Objekten, Variablen, Klassen, Typspezifikationen, Bedingungen und Unterprogrammen, die die Operationen von Dateien und Programmen vorgeben, ohne den Quellcode pflegen zu müssen.
Es gibt drei Arten von Bibliotheken:
- Dynamische Bibliotheken: Dies sind Bibliotheken, die von Programmen verwendet werden, die in kleinerem Maßstab kompiliert werden. Wie der Name schon sagt, wird es zum Zeitpunkt der Ausführung dynamisch geladen, sodass eine einzelne Kopie dynamisch zum Ausführen mehrerer Programme verwendet wird.
Dies reduziert den Speicherverbrauch, wodurch die Programmgröße minimiert und die Leistung verbessert wird. Sie haben normalerweise “.so
” Erweiterungen.
- Statische Bibliotheken: Diese Bibliotheken werden von kompletten Programmen verwendet. Sie verknüpfen Programme, ohne den Quellcode neu zu kompilieren, und sparen so Zeit. Diese Bibliotheken sind separat in den Programmdateien enthalten, die ihre Funktionen erfordern. Ihnen folgt normalerweise die Erweiterung “
.a
“. - Shared Libraries: Dies sind individuell installierte Bibliotheken, die bei der Installation automatisch von Programmen verwendet werden. Sie können bestimmte Teile einer bereits vorhandenen Bibliothek überschreiben, wenn das Programm bestimmte Aufgaben ausführt. Außerdem können sie zur Laufzeit mit unserem Code oder einem Programm verwendet werden.
Die meisten ausführbaren Dateien, die wir täglich verwenden, enthalten gemeinsam genutzte Bibliotheken. LDD Befehl listet die dynamische Bibliothek Abhängigkeiten. Diese Bibliotheken werden wiederverwendet und programmübergreifend gemeinsam genutzt, um die Entwicklung von Programmen zu vereinfachen und deren Größe und Auslastung des Computerspeichers zu verringern.
Unter Linux haben diese Dateien die Form einer “.so
” -Erweiterung und sind in /usr/lib*
oder einfach /lib*
gespeichert.
Verschiedene Distributionen von Linux-Systemen können einen anderen Satz von Bibliotheken für ein Programm verpacken, so dass es auf verschiedenen Versionen des Betriebssystems unterschiedlich funktioniert. Wenn eine gemeinsam genutzte Bibliothek für ein Programm auf Ihrem System nicht verfügbar ist, erhalten Sie einen Fehler, der folgendermaßen aussehen kann:
Sudo: error while loading shared libraries: libpthread.so.0:Cannot open shared object file: no such file or directory.
Wir können dann die gemeinsam genutzten Bibliotheken für ein bestimmtes Programm mit dem Befehl LDD überprüfen.
Installieren des Befehls LDD.
Der Befehl LDD ist inhärent in fast jeder Linux-Distribution verfügbar. Falls dies nicht der Fall ist, können Sie den folgenden Befehl verwenden, um es zu installieren:
$ sudo apt-get install libc-bin
Der Befehl $ ldd
hat die folgende Syntax:
$ ldd <options> <executable>
Oder allgemeiner:
$ ldd -v /path/to/program/executable
LDD ist ein einfacher, aber leistungsstarker Befehl. Es bietet Hilfe und andere Variationen mit verschiedenen Flags. Sie werden im Folgenden kurz beschrieben.
-version
: Um die aktuell verwendete LDD-Version anzuzeigen.
-v --verbose
: Um Informationen kompliziert anzuzeigen.
-u --unused
: Um nicht verwendete Abhängigkeiten anzuzeigen.
-d --data-relocs
: Um fehlende Objekte zu lokalisieren und zu identifizieren.
-r --function-relocs
: Um Datenobjekte und Funktionen zu verschieben sowie fehlende Funktionen oder Objekte zu identifizieren.
–-help
: Um Hilfe bei der Verwendung von Befehlen bereitzustellen.
Mit dem Befehl LDD.
Nachdem Sie die Installation abgeschlossen haben, können Sie nun lernen, wie Sie den Befehl LDD unter Linux verwenden. Wir werden dies zusammen mit der Identifizierung gemeinsam genutzter Bibliotheken demonstrieren.
Wir werden uns die gemeinsam genutzten Bibliotheken für Bash ansehen, die Standard-Shell unter Linux. Es ist verantwortlich für die Ausführung von Befehlen und die Bereitstellung einer Schnittstelle zwischen Benutzer und Betriebssystem.
Um den Befehl LDD zu verwenden, gehen Sie folgendermaßen vor:
- Öffnen Sie zunächst das Befehlsterminal, indem Sie Strg + Alt + T auf Ihrer Tastatur drücken.
- Suchen Sie als Nächstes den Pfad mit dem Befehl
which
oderwhereis
gefolgt vom Befehl LDD, indem Sie Folgendes eingeben:
$ which bash$ whereis bash$ ldd /usr/bin/bash
Wie Sie sehen, sind die Abhängigkeiten der gemeinsam genutzten Bibliothek sichtbar. Verwenden Sie für eine detaillierte und komplexere Übersicht das Flag -v
mit dem Befehl $ ldd
wie folgt:
$ ldd -v /usr/bin/bash
Ebenso können wir das Flag -u
verwenden, um die nicht verwendeten Abhängigkeiten anzuzeigen.
$ ldd -u /usr/bin/bash
Im oben gezeigten Fall gibt es keine ungenutzten Abhängigkeiten. Es wird immer empfohlen, im Auge zu behalten, welche Bibliotheken im Leerlauf sind und Speicher verbrauchen. Wenn Sie dies nicht tun, kann Ihr Kernel mit nicht verwendeten Dateien geladen werden, was die Leistung beeinträchtigt. Es wäre hilfreich, unseren Artikel zum Freigeben von Speicherplatz unter Ubuntu zu lesen.
Für die Daten- und Funktionsverlagerungen verwenden wir die Flags -d
und -r
neben dem Befehl $ ldd
.
$ ldd -d /usr/bin/bash$ ldd -r /usr/bin/bash
Diese Flags helfen auch, fehlende Objekte und Funktionen zu identifizieren.
Zu guter Letzt können wir das --help
Flag für eine schnelle Abfrage der Flags und ihrer jeweiligen Aktionen verwenden.
Einschränkungen des Befehls LDD.
Es ist zu beachten, dass der Befehl LDD nicht mit Programmen funktioniert, die nicht dynamisch ausführbar sind, “a.out
” gemeinsam genutzte Bibliotheken oder Dateien, die veraltet sind oder vor der Veröffentlichung von LDD entwickelt wurden.
Schließlich wird empfohlen, LDD-Befehle nicht mit nicht vertrauenswürdigen Quellen zu verwenden, da dies zu abrupten Fehlern und Ausnahmen führen kann.
Die Handbuchseite für LDD schlägt einen alternativen Befehl vor, der aus den Dienstprogrammen objdump
und grep
besteht.
~/$objdump -p /path/program/grep NEEDED
LDD ist eine dieser untergrabenen Anweisungen, die bei richtiger Verwendung einen wesentlichen Unterschied in Ihrer Interaktion mit dem Betriebssystem bewirken können. Es ist ein leistungsfähiger Verknüpfungsbefehl mit einem bestimmten Zweck, und es liefert definitiv. Weitere Informationen zum Befehl und seiner Verwendung finden Sie auf der Manpage für den Befehl LDD.
Leave a Reply