GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So listen Sie gemeinsam genutzte Bibliotheken auf, die von ausführbaren Dateien in Linux verwendet werden

Unter einer Linux-Betriebssystemumgebung werden die binären ausführbaren Dateien, die mit den Anwendungen/Programmen verbunden sind, die Sie ausführen möchten, direkt mit gemeinsam genutzten Bibliotheken verknüpft, die zur Laufzeit geladen werden.

Als neugieriger und sich entwickelnder Linux-Benutzer werden Sie versucht sein, sich ein Bild über diese gemeinsam genutzten Bibliotheken zu machen, die mit den binären ausführbaren Dateien, die Sie während eines normalen Programmstarts ausführen, involviert/verknüpft sind.

Dieser Artikel führt uns durch verschiedene Ansätze, um alle gemeinsam genutzten Bibliotheken herauszufinden, die von ausführbaren Dateien in Linux verwendet werden.

Kurzer Überblick über Linux-Bibliotheken

Ein Programmierer oder ein mit der Programmierwelt vertrauter Benutzer wird eine Bibliothek als vorkompilierte Codeteile/Segmente definieren, die auf organisierte Weise/in einem organisierten Format zusammengesetzt sind. Die vorkompilierte Natur/das Attribut einer Bibliothek macht sie flexibel und einfach zwischen verschiedenen Programmen wiederverwendbar.

Unter der Linux-Betriebssystemarchitektur können wir Bibliotheken entweder als statisch kategorisieren (statische Bibliotheken ) oder geteilt (gemeinsame Bibliotheken ).

Statische Bibliotheken sind statisch an ein bestimmtes Programm gebunden und nur während der Kompilierzeit des Programms zugänglich. Gemeinsam genutzte Bibliotheken werden aktiv, sobald ein Programm gestartet wird, und verbleiben während der Laufzeit des Programms im Arbeitsspeicher.

So finden Sie die gemeinsam genutzten Bibliotheken eines Programms in Linux

Bevor Sie die mit Ihrem Zielprogramm verknüpften gemeinsam genutzten Bibliotheken bestimmen, müssen Sie zunächst wissen, wo sich die mit Ihrem Programm verknüpfte ausführbare Datei befindet. Unter Linux befindet sich der Speicherort für die ausführbaren Dateien Ihrer Programme normalerweise innerhalb von /usr/bin Verzeichnis.

$ ls -l /usr/bin

Die Spalte ganz rechts listet die Namen der ausführbaren Dateien Ihrer Programme auf.

Suchen Sie gemeinsam genutzte Bibliotheken des Linux-Programms mit dem Befehl ldd

Der ldd Der Befehl existiert als einfaches Shell-Skript, das auf die gemeinsam genutzten Bibliotheken eines Programms verweist. Lassen Sie uns gemäß obiger Bildschirmaufnahme beispielsweise versuchen, die gemeinsam genutzten Bibliotheken auszugeben, die mit der Anydesk-Anwendung verknüpft sind.

Wir könnten den Speicherort der ausführbaren Datei von Anydesk mit dem folgenden Befehl ermitteln:

$ whereis anydesk

Um seine gemeinsam genutzten Bibliotheken über das ldd zu ermitteln Befehl, werden wir ausführen:

$ ldd /usr/bin/anydesk 

Wie Sie sehen können, haben wir eine Liste zahlreicher Bibliotheken, die mit anydesk verknüpft sind Anwendung. Bitte beachten Sie, dass die ldd Der Befehl neigt dazu, abgefragte Programme auszuführen, um Informationen zu gemeinsam genutzten Bibliotheken abzurufen. Verknüpfen Sie den Befehl daher nur mit vertrauenswürdigen ausführbaren Dateien.

Gemeinsame Programmbibliotheken mit den Befehlen objdump und grep suchen

Der objdump Befehl, der Teil der GNU Binutils ist Paket konzentriert sich auf die Anzeige der Objektdateiinformationen, während das grep Der Befehl listet die zugehörigen gemeinsam genutzten Bibliotheken des Programms auf.

Mal sehen, was diese Befehle für ein Programm wie whois ergeben Wird für Informationen zu Domainnamen verwendet.

$ whereis whois 

Als nächstes finden Sie die gemeinsam genutzten Bibliotheken des Programms heraus.

$ objdump -p /usr/bin/whois | grep 'NEEDED'

Wie Sie sehen können, das whois Die ausführbare Domain-Lookup-Programmdatei ist zwei gemeinsam genutzten Bibliotheken zugeordnet.

Alternativ können Sie auch das readelf verwenden Befehl zum Abrufen freigegebener Informationen für die ausführbare Datei des ZIP-Programms.

$ whereis zip
$ readelf --dynamic /usr/bin/zip | grep NEEDED

Gemäß der Ausgabe ist die zip Die ausführbare Programmdatei ist zwei gemeinsam genutzten Bibliotheken zugeordnet.

Gemeinsam genutzte Bibliotheken mit dem Awk-Befehl finden

Diese Option ist ideal für ein bereits laufendes Programm. Wir müssen zuerst seine PID abrufen (Prozess-ID ). Sagen wir zum Beispiel, wir haben den Flammenschuss Dienstprogramm zur Bildschirmaufnahme wird ausgeführt.

Um seine PID zu erhalten , werden wir ausführen:

$ pgrep flameshot 

45261

Unsere /proc//maps Datei wird in /proc/45261/maps umgewandelt . Diese Datei können wir nun mit dem awk kombinieren Befehl zum Abrufen von Flammenschuss ausführbare gemeinsam genutzte Bibliotheken, wie unten gezeigt.

$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Wir sind jetzt gut damit vertraut, alle gemeinsam genutzten Bibliotheken aufzulisten, die mit ausführbaren Programmdateien in Linux verbunden sind.


Linux
  1. So verwalten und listen Sie Dienste in Linux auf

  2. Einführung in gemeinsam genutzte Linux-Bibliotheken (So erstellen Sie gemeinsam genutzte Bibliotheken)

  3. Wie zeigt man alle gemeinsam genutzten Bibliotheken an, die von ausführbaren Dateien in Linux verwendet werden?

  4. So initialisieren Sie eine gemeinsam genutzte Bibliothek unter Linux

  5. Wie listet man Prozesse auf, die an ein Shared-Memory-Segment in Linux angehängt sind?

So listen Sie installierte Pakete in Linux auf

So listen Sie Festplattenpartitionen unter Linux auf

So listen Sie die Mitglieder einer Gruppe in Linux auf

So listen Sie Benutzer unter Linux auf

So listen Sie Festplatten unter Linux auf

So listen Sie Dienste unter Linux auf