Linux-Befehle · 4 min read · Sep 14, 2025
Linux nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Wenn Sie ein Linux-Benutzer sind, der auch in der Programmierung und der Entwicklung von Systemsoftware tätig ist, könnten Sie in Situationen geraten, in denen Sie Informationen zu Symbolen in einer Objektdatei benötigen. Sie werden froh sein zu erfahren, dass es ein Kommandozeilenwerkzeug - genannt nm - gibt, das Sie in diesen Situationen verwenden können.
In diesem Tutorial werden wir die Grundlagen dieses Werkzeugs anhand einiger leicht verständlicher Beispiele besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle hier gezeigten Beispiele auf einem Ubuntu 22.04 LTS-Rechner getestet wurden.
Linux nm-Befehl
Das nm-Kommandozeilenwerkzeug listet im Grunde genommen Symbole aus Objektdateien auf. Hier ist die Syntax des Werkzeugs:
nm [OPTIONEN] OBJECT-FILENAMEUnd so erklärt die Man-Seite des Befehls:
GNU nm listet die Symbole aus Objektdateien objfile.... Wenn keine Objektdateien als Argumente aufgelistet sind, geht nm davon aus, dass die Datei a.out ist.Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon geben, wie nm funktioniert.
Q1. Wie funktioniert der nm-Befehl?
Die grundlegende Verwendung dieses Befehls ist sehr einfach - alles, was Sie tun müssen, ist, den ‘nm’-Befehl auszuführen und den Namen der Objektdatei als Eingabe zu übergeben. Zum Beispiel habe ich den nm-Befehl mit der ‘apl’-Binärdatei verwendet:
nm aplDer folgende Screenshot zeigt die Art von Ausgabe, die der obige Befehl erzeugt hat:

Die drei in der Ausgabe erzeugten Spalten repräsentieren den Symbolwert, den Symboltyp und den Symbolnamen. Es gibt mehrere Arten von Symbolen - um die vollständigen Details zu erfahren, gehen Sie zur Man-Seite des nm-Befehls.
Q2. Wie kann ich Dateinamen vor jedem Symbol in der Ausgabe anzeigen lassen?
Das können Sie mit der -A Kommandozeilenoption tun.
nm -A [obj-file]Zum Beispiel:
nm -A apl
So sehen Sie, dass der Dateiname am Anfang jeder Zeile hinzugefügt wurde.
Q3. Wie kann ich nm dazu bringen, auch Debugger-Symbole anzuzeigen?
Um nm dazu zu bringen, auch Debugger-Symbole in der Ausgabe anzuzeigen, verwenden Sie die -a Kommandozeilenoption.
nm -a [obj-filename]Zum Beispiel:
nm -a aplDer obige Befehl zeigt alle Symbole an, einschließlich der nur für den Debugger bestimmten Symbole, die normalerweise nicht aufgelistet sind.
Q4. Wie kann ich nm dazu bringen, niedrigstufige Symbolnamen zu dekodieren?
Wenn Sie möchten, können Sie nm sogar zwingen, niedrigstufige Symbolnamen in benutzerfreundliche Namen zu dekodieren. Das können Sie mit der -C Kommandozeilenoption tun.
nm -C [obj-file]Zum Beispiel:
nm -C aplHier ist, was die Man-Seite zu dieser Option zu sagen hat:
Neben dem Entfernen eines anfänglichen Unterstrichs, der vom System hinzugefügt wurde,
macht dies C++-Funktionsnamen lesbar. Verschiedene Compiler haben
unterschiedliche Mangling-Stile. Das optionale Demangling-Stil-Argument
kann verwendet werden, um einen geeigneten Demangling-Stil für Ihren
Compiler auszuwählen.Q5. Wie kann ich nm dazu bringen, nur dynamische Symbole anzuzeigen?
Falls Sie möchten, dass nm nur dynamische Symbole anzeigt, anstatt der normalen Symbole, verwenden Sie die -D Kommandozeilenoption.
nm -D [obj-file]Zum Beispiel:
nm -D apl
So sehen Sie, dass nm nur dynamische Symbole in der Ausgabe erzeugt hat.
Q6. Wie kann ich verschiedene nm-Ausgabeformate verwenden?
Um verschiedene Ausgabeformate zu aktivieren, verwenden Sie die -f Kommandozeilenoption. Standardmäßig wird die Ausgabe im bsd-Format erzeugt, jedoch können Sie auch die Formate ‘sysv’ und ‘posix’ aktivieren.
nm -f [format] [obj-filename]Zum Beispiel:
nm -f posix apl
Beobachten Sie die Änderung im Format jetzt.
Q7. Wie kann ich nm dazu bringen, nur externe Symbole anzuzeigen?
Das können Sie mit der -g Kommandozeilenoption erreichen.
nm -g [obj-file]Zum Beispiel:
nm -g apl
Q8. Welche Sortieroptionen bietet nm?
Standardmäßig werden die Symbole alphabetisch sortiert. Wenn Sie möchten, können Sie sie jedoch auch numerisch nach ihren Adressen sortieren, indem Sie die -n Kommandozeilenoption verwenden.
nm -n [objfile]Zum Beispiel:
nm -n apl
So sehen Sie, dass die Ausgabe jetzt nach Adressen sortiert ist.
Falls Sie nicht möchten, dass nm irgendeine Art von Sortierung anwendet (einschließlich der Standard-Sortierung), verwenden Sie die -p Kommandozeilenoption. Um eine bestehende Sortierung umzukehren, verwenden Sie die -r Kommandozeilenoption.
Q9. Wie kann ich nm dazu bringen, nur undefinierte Symbole anzuzeigen?
Das können Sie mit der -u Kommandozeilenoption tun.
nm -u [obj-file]Zum Beispiel:
nm -u apl
Q10. Wie kann ich nm dazu bringen, nur definierte Symbole anzuzeigen?
Um nm dazu zu bringen, nur definierte Symbole anzuzeigen, verwenden Sie die –defined-only Kommandozeilenoption.
nm --defined-only [obj-file]Zum Beispiel:
nm --defined-only apl
Fazit
Zugegeben, der nm-Befehl hat ein Nischenpublikum, aber meine persönliche Erfahrung sagt, dass selbst wenn Sie sich nicht als Teil dieses Publikums betrachten, Sie im Hinterkopf behalten sollten, dass ein solches Werkzeug existiert. Und für diejenigen, die dieses Dienstprogramm verwenden möchten, gehen Sie, nachdem Sie alle hier gezeigten Beispiele geübt haben, zur nm-Man-Seite, um mehr zu erfahren.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.