Nm
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.