nm(1)
NAMN
nm – lista symboler från objektfiler
SYNOPSIS
nm [-A|-o|--print-file-name] [-a|--debug-syms] [-B|--format=bsd] [-C|--demangle[=stil]] [-D|--dynamic] [-fformat|--format=format] [-g|--extern-only] [-h|--help] [--ifunc-chars=TECKEN] [-j|--format=just-symbols] [-l|--line-numbers] [--inlines] [-n|-v|--numeric-sort] [-P|--portability] [-p|--no-sort] [-r|--reverse-sort] [-S|--print-size] [-s|--print-armap] [-t radix|--radix=radix] [-u|--undefined-only] [-U|--defined-only] [-V|--version] [-W|--no-weak] [-X 32_64] [--no-demangle] [--no-recurse-limit|--recurse-limit] [--plugin namn] [--size-sort] [--special-syms] [--synthetic] [--target=bfdnamn] [--unicode=metod] [--with-symbol-versions] [--without-symbol-versions] [objektfil...]
BESKRIVNING
GNU nm listar symboler från objektfiler.
Om inga objektfiler anges som argument antar nm filen:
a.out
För varje symbol visar nm följande:
- symbolvärde
- symboltyp
- symbolnamn
Symbolvärdet visas i den talbas som valts med optioner, eller hexadecimalt som standard.
SYMBOLTYPER
Symboltypen anges med en bokstav.
Om bokstaven är gemen är symbolen vanligtvis lokal.
Om bokstaven är versal är symbolen vanligtvis global, alltså extern.
Det finns dock några gemena symboler som används för särskilda globala symboler:
u v w
A
A
Symbolens värde är absolut och ändras inte av vidare länkning.
B och b
B b
Symbolen finns i BSS-datasektionen.
Denna sektion innehåller normalt nollinitierade eller oinitierade data, även om exakt beteende är systemberoende.
C och c
C c
Symbolen är common.
Common-symboler är oinitierade data.
Vid länkning kan flera common-symboler med samma namn förekomma.
Om symbolen definieras någonstans behandlas common-symbolerna som odefinierade referenser.
Det gemena tecknet c används när symbolen finns i en särskild sektion för små common-symboler.
D och d
D d
Symbolen finns i den initierade datasektionen.
G och g
G g
Symbolen finns i en initierad datasektion för små objekt.
Vissa objektfilformat tillåter effektivare åtkomst till små dataobjekt, till exempel en global int-variabel i stället för en stor global array.
i
i
För PE-formatfiler anger detta att symbolen finns i en sektion som är specifik för implementationen av DLL:er.
För ELF-formatfiler anger detta att symbolen är en indirekt funktion.
Detta är en GNU-utökning av den normala uppsättningen ELF-symboltyper.
Om en sådan symbol refereras av en relocation utvärderas den inte till sin adress. I stället måste den anropas vid körning. Körningen returnerar sedan det värde som ska användas i relocation.
Den faktiska symbolvisningen för GNU indirect symbols styrs av kommandoradsoptionen:
--ifunc-chars
Om denna option anges används det första tecknet i strängen för globala indirekta funktionssymboler.
Om strängen innehåller ett andra tecken används det för lokala indirekta funktionssymboler.
I
I
Symbolen är en indirekt referens till en annan symbol.
N
N
Symbolen är en felsökningssymbol.
n
n
Symbolen finns i en skrivskyddad sektion som varken är data, kod eller debug.
p
p
Symbolen finns i en stack unwind-sektion.
R och r
R r
Symbolen finns i en skrivskyddad datasektion.
S och s
S s
Symbolen finns i en oinitierad eller nollinitierad datasektion för små objekt.
T och t
T t
Symbolen finns i textsektionen, alltså kodsektionen.
U
U
Symbolen är odefinierad.
u
u
Symbolen är en unik global symbol.
Detta är en GNU-utökning av den normala uppsättningen ELF-symbolbindningar.
För en sådan symbol säkerställer den dynamiska länkaren att det i hela processen bara finns en symbol med detta namn och denna typ i användning.
V och v
V v
Symbolen är ett svagt objekt.
När en svagt definierad symbol länkas med en normalt definierad symbol används den normalt definierade symbolen utan fel.
När en svagt odefinierad symbol länkas och symbolen inte är definierad blir värdet för den svaga symbolen noll utan fel.
På vissa system anger versal att ett standardvärde har angivits.
W och w
W w
Symbolen är en svag symbol som inte specifikt har markerats som ett svagt objektsymbol.
När en svagt definierad symbol länkas med en normalt definierad symbol används den normalt definierade symbolen utan fel.
När en svagt odefinierad symbol länkas och symbolen inte är definierad bestäms symbolens värde på ett systemberoende sätt utan fel.
På vissa system anger versal att ett standardvärde har angivits.
Bindestreck
-
Symbolen är en stabs-symbol i en a.out-objektfil.
I detta fall skrivs därefter följande värden:
- stabs other field
- stabs desc field
- stab type
Stabs-symboler används för felsökningsinformation.
Frågetecken
?
Symboltypen är okänd eller specifik för objektfilformatet.
SYMBOLNAMN OCH VERSIONER
Symbolnamnet visas sist.
Om en symbol har versionsinformation kopplad till sig visas även versionsinformationen.
Om den versionerade symbolen är odefinierad eller dold för länkaren visas versionssträngen som suffix till symbolnamnet, föregånget av ett @.
Exempel:
foo@VER_1
Om versionen är standardversionen som ska användas när oversionerade referenser till symbolen löses upp, visas suffixet med två @.
Exempel:
foo@@VER_2
OPTIONER
De långa och korta formerna av optioner som visas här är ekvivalenta.
-A
-o
--print-file-name
- Skriv namnet på indatafilen, eller arkivmedlemmen, före varje symbol där den hittades.
- Detta görs i stället för att bara identifiera indatafilen en gång före alla dess symboler.
-a
--debug-syms
- Visa alla symboler, även symboler som bara är avsedda för felsökare.
- Normalt listas dessa inte.
-B
- Samma som:
--format=bsd
- Finns för kompatibilitet med MIPS nm.
-C
--demangle[=stil]
- Avkoda, alltså demangle, lågnivåsymbolnamn till användarnivånamn.
- Förutom att ta bort eventuell initial understrykning som systemet lagt till gör detta C++-funktionsnamn läsbara.
- Olika kompilatorer har olika mangling-stilar.
- Det valfria argumentet stil kan användas för att välja lämplig demangling-stil för kompilatorn.
--no-demangle
- Demangle inte lågnivåsymbolnamn.
- Detta är standard.
--recurse-limit
--no-recurse-limit
--recursion-limit
--no-recursion-limit
- Aktiverar eller inaktiverar en gräns för hur mycket rekursion som görs vid demangling av strängar.
- Eftersom namn-mangling-format kan tillåta obegränsad rekursion är det möjligt att skapa strängar vars avkodning förbrukar allt stackutrymme på värddatorn och orsakar minnesfel.
- Gränsen försöker förhindra detta genom att begränsa rekursionen till:
2048
nivåer av nästling.
- Standard är att gränsen är aktiverad.
- Om gränsen inaktiveras kan stack exhaustion inträffa, och felrapporter om sådana händelser avvisas.
-D
--dynamic
- Visa dynamiska symboler i stället för normala symboler.
- Detta är bara meningsfullt för dynamiska objekt, till exempel vissa typer av delade bibliotek.
-f format
--format= format
- Använd utdatarformatet format.
- Möjliga format är:
bsd sysv posix just-symbols
- Standard är:
bsd
- Endast första tecknet i format är betydelsefullt, och det kan vara versalt eller gement.
-g
--extern-only
- Visa endast externa symboler.
-h
--help
- Visa en sammanfattning av optionerna för nm och avsluta.
--ifunc-chars=TECKEN
- När GNU indirect function-symboler visas använder nm normalt tecknet i för både lokala och globala indirekta funktioner.
- Med --ifunc-chars kan användaren ange en sträng med ett eller två tecken.
- Det första tecknet används för globala indirekta funktionssymboler.
- Det andra tecknet, om det finns, används för lokala indirekta funktionssymboler.
-j
- Samma som:
--format=just-symbols
-l
--line-numbers
- För varje symbol används felsökningsinformation för att försöka hitta filnamn och radnummer.
- För en definierad symbol söks radnumret för symbolens adress.
- För en odefinierad symbol söks radnumret för en relocation-post som refererar till symbolen.
- Om radnummerinformation hittas skrivs den efter övrig symbolinformation.
--inlines
- När -l är aktiv och adressen hör till en funktion som inline:ats, gör denna option att källinformation för alla omslutande scope tillbaka till första icke-inline:ade funktion också skrivs.
- Exempel: om main inline:ar callee1, som inline:ar callee2, och adressen kommer från callee2, skrivs källinformation även för callee1 och main.
-n
-v
--numeric-sort
- Sortera symboler numeriskt efter adress, i stället för alfabetiskt efter namn.
-p
--no-sort
- Sortera inte symbolerna.
- Skriv dem i den ordning de påträffas.
-P
--portability
- Använd POSIX.2-standardens utdataformat i stället för standardformatet.
- Motsvarar:
-f posix
-r
--reverse-sort
- Vänd sorteringsordningen, oavsett om sorteringen är numerisk eller alfabetisk.
-S
--print-size
- Skriv både värde och storlek för definierade symboler i utdatarstilen bsd.
- Optionen saknar effekt för objektformat som inte lagrar symbolstorlekar, om inte --size-sort också används. I så fall visas en beräknad storlek.
-s
--print-armap
- Vid listning av symboler från arkivmedlemmar tas indexet med.
- Detta är en mappning, lagrad i arkivet av ar(1) eller ranlib(1), över vilka moduler som innehåller definitioner för vilka namn.
-t radix
--radix= radix
- Använd radix som talbas för att skriva symbolvärden.
- Värdet måste vara:
d decimal o oktal x hexadecimal
-u
--undefined-only
- Visa endast odefinierade symboler, alltså symboler externa till varje objektfil.
- Som standard visas både definierade och odefinierade symboler.
-U
--defined-only
- Visa endast definierade symboler för varje objektfil.
- Som standard visas både definierade och odefinierade symboler.
-V
--version
- Visa versionsnumret för nm och avsluta.
-X
- Denna option ignoreras för kompatibilitet med AIX-versionen av nm.
- Den tar en parameter som måste vara strängen:
32_64
- Standardläget för AIX nm motsvarar -X 32, vilket inte stöds av GNU nm.
--plugin namn
- Ladda pluginen namn för att lägga till stöd för extra måltyper.
- Denna option finns endast om verktygskedjan byggts med pluginstöd.
- Om --plugin inte anges, men pluginstöd är aktiverat, itererar nm över filerna i:
${libdir}/bfd-plugins
i alfabetisk ordning och använder första plugin som hävdar objektet i fråga.
- Observera att denna pluginsökkatalog inte är den som används av länkarens option ld -plugin.
- För att få nm att använda länkpluginen måste den kopieras till:
${libdir}/bfd-plugins
- För GCC-baserade kompileringar heter länkpluginen:
liblto_plugin.so.0.0.0
- För Clang-baserade kompileringar heter den:
LLVMgold.so
- GCC-pluginen är alltid bakåtkompatibel med tidigare versioner, så det räcker att kopiera den nyaste.
--size-sort
- Sortera symboler efter storlek.
- För ELF-objekt läses symbolstorlekar från ELF.
- För andra objekttyper beräknas symbolstorleken som skillnaden mellan symbolens värde och värdet för symbolen med närmast högre värde.
- Om utdatarformatet bsd används skrivs symbolens storlek i stället för värdet.
- Använd -S om både storlek och värde ska skrivas.
- Denna option fungerar inte om --undefined-only har aktiverats, eftersom odefinierade symboler saknar storlek.
--special-syms
- Visa symboler som har särskild betydelse för målarkitekturen.
- Dessa symboler används vanligen av målet för särskild behandling och är normalt inte hjälpsamma i vanliga symbollistor.
- För ARM-mål kan denna option exempelvis visa mapping-symboler som markerar övergångar mellan ARM-kod, THUMB-kod och data.
--synthetic
- Ta med syntetiska symboler i utdatan.
- Dessa är särskilda symboler som länkaren skapar för olika syften.
- De visas inte som standard eftersom de inte är del av binärens ursprungliga källkod.
--unicode=[default|invalid|locale|escape|hex|highlight]
- Styr hur UTF-8-kodade flerbytetecken i strängar visas.
default
- Ge dem ingen särskild behandling.
locale
- Visa sekvensen i aktuell locale, som kan eller inte kan stödja dem.
hex och invalid
- Visa dem som hexadecimala bytesekvenser omslutna av vinkelparenteser eller klamrar.
escape
- Visa dem som escape-sekvenser:
\uxxxx
highlight
- Visa dem som escape-sekvenser markerade i rött, om utdataenheten stöder det.
- Färgningen är avsedd att uppmärksamma Unicode-sekvenser där de kanske inte förväntas.
-W
--no-weak
- Visa inte svaga symboler.
--with-symbol-versions
--without-symbol-versions
- Aktiverar eller inaktiverar visning av symbolversionsinformation.
- Versionssträngen visas som suffix till symbolnamnet, föregånget av @.
- Exempel:
foo@VER_1
- Om versionen är standardversionen för oversionerade referenser visas suffixet med två @.
- Exempel:
foo@@VER_2
- Som standard visas symbolversionsinformation.
--target= bfdnamn
- Ange ett annat objektkodsformat än systemets standardformat.
@ fil
- Läs kommandoradsoptioner från fil.
- Optionerna som läses infogas i stället för den ursprungliga @fil-optionen.
- Om fil inte finns, eller inte kan läsas, behandlas optionen bokstavligt och tas inte bort.
- Optioner i fil separeras med blanktecken.
- Ett blanktecken kan ingå i en option genom att hela optionen omges med enkla eller dubbla citattecken.
- Valfritt tecken, inklusive omvänt snedstreck, kan ingå genom att tecknet föregås av omvänt snedstreck.
- Filen kan själv innehålla ytterligare @fil-optioner, och sådana optioner behandlas rekursivt.
SE ÄVEN
- ar(1)
- objdump(1)
- ranlib(1)
- ld(1)
- strings(1)
- elf(5)
- Info-posterna för binutils
UPPHOVSRÄTT
Copyright (c) 1991-2026 Free Software Foundation, Inc.
Tillstånd ges att kopiera, distribuera och/eller ändra detta dokument enligt villkoren i GNU Free Documentation License, version 1.3 eller senare version publicerad av Free Software Foundation.
Det finns inga Invariant Sections, inga Front-Cover Texts och inga Back-Cover Texts.
En kopia av licensen finns i avsnittet:
GNU Free Documentation License
KOLOFON
Denna sida är en del av projektet binutils, en samling verktyg för att arbeta med körbara binärfiler.
Information om projektet finns på:
http://www.gnu.org/software/binutils/
Felrapporter för manualsidan hänvisas till:
http://sourceware.org/bugzilla/enter_bug.cgi?product=binutils
Sidan hämtades från arkivet:
binutils-with-gold-2.46.tar.gz
Arkivet hämtades från:
https://ftp.gnu.org/gnu/binutils/
den 24 maj 2026.
Om du upptäcker renderingsproblem i HTML-versionen av sidan, eller anser att det finns en bättre eller mer aktuell källa, kan du skicka e-post till:
man-pages@man7.org
HÄNVISAD FRÅN
KORT SAMMANFATTNING
nm listar symboler i objektfiler, bibliotek och körbara filer.
Lista symboler i en objektfil:
nm fil.o
Lista symboler i ett program:
nm ./program
Visa bara externa symboler:
nm -g fil.o
Visa bara odefinierade symboler:
nm -u fil.o
Visa bara definierade symboler:
nm -U fil.o
Demangle C++-namn:
nm -C program
Visa dynamiska symboler i delat bibliotek:
nm -D libexempel.so
Sortera numeriskt efter adress:
nm -n program
Sortera efter storlek:
nm --size-sort -S program
Visa filnamn före varje symbol:
nm -A *.o
Visa POSIX-format:
nm -P fil.o
Visa bara symbolnamn:
nm -j fil.o
Visa radnummer om debug-information finns:
nm -l fil.o
Visa symboler i ett arkivbibliotek:
nm libexempel.a
Visa arkivets armap/index:
nm -s libexempel.a
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/nm.1.html
Det här är en maskinöversättning av Linux man sidor 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 Bromma Datorservice som har sponsrat Linux.se med webbhotell.