nm(1)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 2 augusti 2026 kl. 10.57 av Admin (diskussion | bidrag) (→‎Sidslut)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök


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

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.