Nm

Från Wiki.linux.se
(Omdirigerad från nm)
Hoppa till navigering Hoppa till sök

nm - Visa symboltabellen för objektfiler

Kommandot `nm` används för att visa symboltabellen för objektfiler, vilket är användbart för att inspektera innehållet i binära filer.

Syntax

nm [ALTERNATIV] [FIL]...

Beskrivning

Kommandot `nm` listar symbolerna från objektfiler. En symboltabell innehåller information om funktioner och variabler i en binär fil, såsom deras namn, adresser och typer.

Alternativ

Kommandot `nm` stöder flera alternativ som kan användas för att justera dess beteende:

  • -a, --debug-syms - Visa alla symboler, inklusive debugger symboler.
  • -A, --print-file-name - Visa filnamnet för varje symbol.
  • -B - Samma som --format=bsd.
  • -C, --demangle - Demangla namn för att visa läsbara C++ symboler.
  • -D, --dynamic - Visa endast dynamiska symboler.
  • -f, --format=FORMAT - Ange visningsformatet (bsd, sysv, posix).
  • -g, --extern-only - Visa endast externa symboler.
  • -j, --just-symbol-name - Visa endast symbolnamnet.
  • -l, --line-numbers - Visa radnummer för symboler.
  • -n, --numeric-sort - Sortera symbolerna numeriskt efter deras adresser.
  • -o - Visa symbolernas adresser i oktalt format.
  • -p, --no-sort - Sortera inte symbolerna.
  • -P, --portability - Samma som --format=posix.
  • -r, --reverse-sort - Sortera symbolerna i omvänd ordning.
  • -S - Visa symbolernas storlek.
  • -s, --print-armap - Visa arkivindex.
  • -t, --radix=NUMBER - Använd NUMBER-bassystem (8, 10, 16) för att visa symboladresser.
  • -u, --undefined-only - Visa endast odefinierade symboler.
  • -U, --defined-only - Visa endast definierade symboler.
  • -V, --version - Visa versionsinformation och avsluta.
  • -X 32_64 - Använd både 32-bitars och 64-bitars symboler.
  • --help - Visa hjälpmeddelande och avsluta.

Exempel

Här är några praktiska exempel som visar hur du kan använda `nm`-kommandot:

  • För att visa alla symboler i en objektfil:

nm fil.o

  • För att visa alla symboler, inklusive debugger symboler:

nm -a fil.o

  • För att visa symbolernas adresser i oktalt format:

nm -o fil.o

  • För att visa endast externa symboler:

nm -g fil.o

  • För att demangla C++ symboler:

nm -C fil.o

  • För att visa radnummer för symboler:

nm -l fil.o

  • För att sortera symbolerna numeriskt efter deras adresser:

nm -n fil.o

Skillnader mellan macOS och Linux

Det finns några skillnader att tänka på när man använder `nm` på macOS jämfört med Linux:

  • Tillgänglighet: `nm`-kommandot är generellt sett tillgängligt på både macOS och Linux som en del av GNU Binutils-paketet på Linux och som en del av Xcode Developer Tools på macOS.
  • Alternativ: De flesta alternativ som finns på `nm` är tillgängliga på både macOS och Linux, men det rekommenderas att konsultera `man`-sidan på respektive plattform för att bekräfta tillgängliga alternativ och eventuella skillnader.

Exempel på att använda `nm` på macOS:

  • För att visa alla symboler i en objektfil:

nm fil.o

Exempel på att installera `nm` på macOS med Xcode Developer Tools:

  • Installera Xcode Developer Tools om det inte redan är installerat:

xcode-select --install

Det är alltid bra att konsultera `man`-sidan för `nm` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.

Felsökning

Om du får ett felmeddelande när du använder `nm`, kontrollera följande:

  • Att du använder rätt syntax och alternativ för ditt specifika kommando.
  • Att objektfilen du försöker visa existerar och är tillgänglig.
  • Att du har nödvändiga behörigheter för att läsa objektfilen.

Se även

  • objdump - Visa detaljerad information om objektfiler.
  • readelf - Visa information om ELF-format objektfiler.
  • strip - Ta bort symboltabeller och andra delar från objektfiler.

Källor

Sidslut


Det här är en maskinöversättning av linux kommando manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.