ld(1)
NAMN
ld – GNU-länkaren
SYNOPSIS
ld [optioner] objektfil ...
BESKRIVNING
ld kombinerar ett antal objektfiler och arkivfiler, relokerar deras data och knyter ihop symbolreferenser.
Normalt är körning av ld det sista steget vid kompilering av ett program.
ld accepterar filer skrivna i Linker Command Language. Språket är en övermängd av AT&T:s Link Editor Command Language och används för att ge uttrycklig och fullständig kontroll över länkningsprocessen.
Manualsidan beskriver inte hela kommandospråket. För fullständig dokumentation om kommandospråket och andra delar av GNU-länkaren, se ld-posten i info:
info ld
Denna version av ld använder BFD-biblioteken för att arbeta med objektfiler. Det gör att ld kan läsa, kombinera och skriva objektfiler i många format, exempelvis:
COFF a.out ELF
Olika format kan länkas ihop för att skapa någon tillgänglig typ av objektfil.
GNU-länkaren försöker vara mer hjälpsam än många andra länkare genom att ge diagnostisk information. Många länkare avbryter direkt vid första fel. När det är möjligt fortsätter ld så att fler fel kan identifieras, eller i vissa fall så att en utdatafil ändå kan skapas.
GRUNDLÄGGANDE ANVÄNDNING
Ett vanligt exempel på ett Unix-liknande system är att länka en objektfil:
ld -o output /lib/crt0.o hello.o -lc
Detta säger åt ld att skapa filen output genom att länka:
/lib/crt0.o hello.o libc.a
Biblioteket libc.a hämtas från standardkatalogerna för bibliotekssökning.
I praktiken körs ld ofta indirekt via en kompilatordrivare som gcc(1). Då måste länkoptioner normalt skickas via -Wl,.
Exempel:
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
För optioner som tar argument är det säkrast att använda sammanfogad form:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
Annars kan kompilatordrivaren råka skicka optionen till länkaren men argumentet till kompilatorn.
OPTIONERNAS ORDNING
Vissa optioner kan anges var som helst på kommandoraden.
Optioner som refererar till filer, exempelvis:
-l -T
gör däremot att filen läses vid den punkt där optionen står på kommandoraden, relativt objektfiler och andra filoptioner.
Icke-optioner är objektfiler eller arkiv som ska länkas ihop. De kan stå före, efter eller blandas med optioner, men en objektfil får inte placeras mellan en option och dess argument.
Om inga binära indatafiler anges skapar länkaren ingen utdata och skriver meddelandet:
No input files
Om länkaren inte känner igen formatet på en objektfil antar den att filen är ett länkskript. Ett sådant skript kompletterar huvudlänkskriptet. Använd -T för att ersätta standardlänkskriptet helt.
ALLMÄNNA OPTIONER
@ fil
- Läs kommandoradsoptioner från fil.
- Optionerna infogas i stället för den ursprungliga @fil-optionen.
- Om filen inte finns, eller inte kan läsas, behandlas optionen bokstavligt.
- Optioner i filen separeras med blanktecken. Blanktecken kan ingå i en option om hela optionen omges av enkla eller dubbla citattecken.
-a nyckelord
- Stöds för HP/UX-kompatibilitet.
- nyckelord måste vara ett av:
archive shared default
- -aarchive motsvarar funktionellt -Bstatic.
- shared och default motsvarar funktionellt -Bdynamic.
-b indataformat
--format= indataformat
- Ange binärformat för efterföljande objektfiler på kommandoraden.
- Användbart om ld är byggd med stöd för flera objektformat.
- Tillgängliga format kan listas med:
objdump -i
- Standardformatet kan tas från miljövariabeln:
GNUTARGET
-c MRI-kommandofil
--mri-script= MRI-kommandofil
- Läs ett MRI-kompatibelt länkskript.
- För vanliga GNU ld-länkskript används i stället -T.
-d, -dc, -dp
- Tilldela utrymme för common-symboler även om en relokerbar utdatafil skapas med -r.
- Länkskriptkommandot FORCE_COMMON_ALLOCATION har samma effekt.
-e entry
--entry= entry
- Använd entry som explicit symbol för programmets startpunkt.
- Om ingen symbol med namnet finns försöker länkaren tolka entry som ett tal och använda det som startadress.
-E
--export-dynamic
- När en dynamiskt länkad körbar fil skapas läggs alla symboler till i den dynamiska symboltabellen.
- Detta behövs ofta när ett program använder dlopen och inlästa dynamiska objekt behöver referera tillbaka till symboler i huvudprogrammet.
--no-export-dynamic
- Återställ standardbeteendet, där den dynamiska symboltabellen normalt bara innehåller symboler som refereras av dynamiska objekt som nämns vid länkningen.
-EB
- Länka big-endian-objekt.
-EL
- Länka little-endian-objekt.
-f namn
--auxiliary= namn
- Vid skapande av ett ELF-delat objekt sätts fältet DT_AUXILIARY till angivet namn.
-F namn
--filter= namn
- Vid skapande av ett ELF-delat objekt sätts fältet DT_FILTER till angivet namn.
-fini= namn
- Vid skapande av ett ELF-program eller delat objekt anropas namn när objektet laddas ur.
- Standard är:
_fini
-g
- Ignoreras. Finns för kompatibilitet med andra verktyg.
-G värde
--gpsize= värde
- Sätt största objektstorlek som ska optimeras med GP-registret.
- Detta är bara meningsfullt för objektformat som MIPS ELF.
-h namn
-soname= namn
- Vid skapande av ett ELF-delat objekt sätts fältet DT_SONAME.
- När ett program länkas mot ett sådant objekt försöker den dynamiska länkaren vid körning läsa in objektet som anges av DT_SONAME.
-i
- Utför en inkrementell länkning.
- Samma som -r.
-init= namn
- Vid skapande av ett ELF-program eller delat objekt anropas namn när objektet laddas.
- Standard är:
_init
BIBLIOTEK OCH SÖKVÄGAR
-l namnspec
--library= namnspec
- Lägg till ett arkiv eller en objektfil i listan över filer som ska länkas.
- Om namnspec har formen:
:filnamn
söker ld efter exakt filnamn i bibliotekssökvägen.
- Annars söker ld efter:
libnamnspec.a
- På system med delade bibliotek kan ld även söka efter:
libnamnspec.so
före:
libnamnspec.a
- Arkiv söks normalt bara en gång, på den plats där arkivet anges på kommandoraden.
- Om en senare objektfil skapar en ny odefinierad symbol gör det inte att länkaren söker igenom ett tidigare arkiv igen.
- För att tvinga upprepad sökning i arkiv används gruppoptionerna:
--start-group --end-group
-L sökkatalog
--library-path= sökkatalog
- Lägg till sökkatalog i listan över kataloger där ld söker efter arkivbibliotek och kontrollskript.
- Kataloger som anges på kommandoraden genomsöks före standardkatalogerna.
- Alla -L-optioner gäller för alla -l-optioner, oavsett ordning.
- Om sökkatalog börjar med = eller $SYSROOT ersätts prefixet med sysroot-prefixet.
-Y sökväg
- Lägg till sökväg i standardbibliotekssökvägen.
- Finns för Solaris-kompatibilitet.
UTDATA OCH LÄNKKARTA
-o utdata
--output= utdata
- Använd utdata som namn på den fil som ld skapar.
- Om optionen inte anges används:
a.out
- Länkskriptkommandot OUTPUT kan också ange utdatafilens namn.
- Länkaren raderar utdatafilen innan den börjar skriva till den. Detta görs även om länkningen senare misslyckas.
- I byggsystem rekommenderas därför att -o anges som sista option på kommandoraden:
ld $(OBJS) -o $(EXE)
Det är säkrare än:
ld -o $(EXE) $(OBJS)
om variabeln EXE skulle vara tom.
-M
--print-map
- Skriv en länkkarta till standardutdata.
- En länkkarta visar bland annat:
- var objektfiler mappas in i minnet
- hur common-symboler allokeras
- vilka arkivmedlemmar som tas med i länkningen
- vilken symbol som gjorde att en arkivmedlem togs med
- värden som tilldelas symboler
- hur GNU properties slås ihop
- på vissa ELF-mål: fixups som införts av --relax
-Map= fil
- Skriv länkkarta till angiven fil.
--print-map-discarded
--no-print-map-discarded
- Skriv, eller skriv inte, listan över bortkastade och garbage collected-sektioner i länkkartan.
--print-map-locals
--no-print-map-locals
- Skriv, eller skriv inte, lokala symboler i länkkartan.
LÄNKSKRIPT
-T skriptfil
--script= skriptfil
- Använd skriptfil som länkskript.
- Skriptet ersätter standardlänkskriptet om det inte innehåller INSERT.
- Om skriptfilen inte finns i aktuell katalog söker ld i kataloger som angivits med tidigare -L-optioner.
- Kommandoradsoptioner före -T kan påverka skriptet, men optioner efter -T gör det inte.
-dT skriptfil
--default-script= skriptfil
- Använd skriptfil som standardlänkskript.
- Behandlingen skjuts upp tills resten av kommandoraden har behandlats.
-u symbol
--undefined= symbol
- Tvinga in symbol i utdatafilen som odefinierad symbol.
- Detta kan exempelvis få länkaren att hämta in extra moduler från standardbibliotek.
--require-defined= symbol
- Kräver att symbol är definierad i utdatafilen.
- Om symbolen inte är definierad ger länkaren fel och avslutar.
RELokerBAR OCH PARTIELL LÄNKNING
-r
--relocatable
- Skapa relokerbar utdata, alltså en utdatafil som i sin tur kan användas som indata till ld.
- Detta kallas ofta partiell länkning.
- Vid länkning av C++-program löser -r inte referenser till konstruktorer. För detta används -Ur där det behövs.
-Ur
- Liknar -r, men kan också lösa referenser till konstruktorer och destruktorer på system där detta skiljer sig från -r.
- Använd -Ur endast för den sista partiella länkningen, och -r för tidigare steg.
-R filnamn
--just-symbols= filnamn
- Läs symbolnamn och adresser från filnamn, men relokera inte filen och ta inte med den i utdata.
- Detta gör att utdatafilen symboliskt kan referera till absoluta minnesplatser definierade i andra program.
STRIPPNING OCH SYMBOLER
-s
--strip-all
- Utelämna all symbolinformation från utdatafilen.
-S
--strip-debug
- Utelämna felsökningssymboler, men inte alla symboler, från utdatafilen.
--strip-discarded
--no-strip-discarded
- Utelämna, eller utelämna inte, globala symboler som definieras i bortkastade sektioner.
-x
--discard-all
- Ta bort alla lokala symboler.
-X
--discard-locals
- Ta bort alla temporära lokala symboler.
- Dessa börjar normalt med systemberoende lokala etikettprefix, ofta:
.L
på ELF-system.
-y symbol
--trace-symbol= symbol
- Skriv namnet på varje länkad fil där symbol förekommer.
- Användbart när man har en odefinierad symbol i länkningen men inte vet var referensen kommer ifrån.
PLUGIN OCH LTO
-plugin namn
- Använd en plugin i länkningsprocessen.
- Parametern namn är det absoluta filnamnet till pluginen.
- Detta läggs ofta till automatiskt av kompilatorn vid link time optimization, LTO.
${libdir}/bfd-plugins
-plugin-save-temps
- Spara pluginens temporära mellanliggande filer permanent.
TILLSTÅND FÖR LÄNKOPTIONER
--push-state
- Spara aktuellt tillstånd för flaggor som styr hantering av indatafiler.
- Kan återställas med --pop-state.
- Påverkade optioner omfattar bland annat:
-Bdynamic -Bstatic -dn -dy -call_shared -non_shared -static -N -n --whole-archive --no-whole-archive -r -Ur --copy-dt-needed-entries --no-copy-dt-needed-entries --as-needed --no-as-needed -a
- Ett vanligt användningsområde är pkg-config.
Exempel:
-Wl,--push-state,--as-needed -libone -libtwo -Wl,--pop-state
--pop-state
- Ångra effekten av --push-state och återställ tidigare värden.
SPÅRNING OCH DIAGNOSTIK
-t
--trace
- Skriv namnen på indatafilerna när ld behandlar dem.
- Om -t anges två gånger skrivs även medlemmar i arkiv.
- Användbart för att skapa en lista över alla objektfiler och skript som ingår i länkningen.
--trace-symbol= symbol
- Se -y.
--dependency-file= depfil
- Skriv en beroendefil som lämpar sig för make(1).
- Filen beskriver utdatafilen och alla indatafiler som lästes för att skapa den.
SEKTIONER OCH ORPHAN-SEKTIONER
--orphan-handling= läge
- Styr hur orphan sections hanteras.
- En orphan section är en sektion som inte uttryckligen nämns i ett länkskript.
Möjliga lägen:
place
- Placera orphan-sektioner i lämplig utdatasektion.
discard
- Kasta alla orphan-sektioner genom att placera dem i:
/DISCARD/
warn
- Placera sektionen som i place, men skriv även en varning.
error
- Avsluta med fel om någon orphan section hittas.
- Standard är:
place
--unique[=SEKTION]
- Skapa en separat utdatasektion för varje indatasektion som matchar SEKTION.
- Om SEKTION utelämnas gäller det varje orphan input section.
SÄKERHET OCH MODERNA ELF-EGENSKAPER
--audit AUDITLIB
- Lägg till AUDITLIB i DT_AUDIT i den dynamiska sektionen.
- Meningsfullt på ELF-plattformar med stöd för rtld-audit.
--depaudit AUDITLIB
- Lägg till AUDITLIB i DT_DEPAUDIT i den dynamiska sektionen.
-z nyckelord
- Styr många mål- och ELF-specifika egenskaper.
Exempel på nyckelord i manualsidan:
combreloc nocombreloc common nocommon defs undefs cet-report=none cet-report=warning cet-report=error common-page-size=värde separate-code
-z defs
- Rapportera olösta symbolreferenser från vanliga objektfiler.
-z undefs
- Motsatt beteende till -z defs för sådana fall där odefinierade symboler tillåts.
VERSION OCH EMULERING
-m emulering
- Emulera angiven länkare.
- Tillgängliga emuleringar kan listas med:
ld -V ld --verbose
- Om -m inte används kan emulering tas från miljövariabeln:
LDEMULATION
-v
--version
-V
- Visa versionsnummer för ld.
- -V listar även emuleringar som stöds.
MILJÖ
GNUTARGET
- Kan ange standardformat för objektfiler när inget annat indataformat anges.
LDEMULATION
- Kan ange vilken länkaremulering som ska användas om -m inte anges.
SE ÄVEN
- ar(1)
- nm(1)
- objcopy(1)
- objdump(1)
- readelf(1)
- ranlib(1)
- gcc(1)
- make(1)
- Info-posterna för binutils och ld
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.
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
KORT SAMMANFATTNING
ld är GNU-länkaren.
Länka objektfiler till ett program:
ld foo.o bar.o -o program
Ange bibliotek:
ld foo.o -L/usr/local/lib -lexempel -o program
Skicka länkoption via GCC:
gcc foo.o bar.o -Wl,-Map=program.map -o program
Skapa länkkarta:
ld foo.o bar.o -Map=program.map -o program
Använd länkskript:
ld -T script.ld foo.o -o program
Skapa relokerbar, partiellt länkad objektfil:
ld -r foo.o bar.o -o combined.o
Spåra var en symbol förekommer:
ld foo.o bar.o -y symbolnamn -o program
Visa vilka filer som behandlas:
ld -t foo.o bar.o -o program
Visa version och emuleringar:
ld -V
Lista objektformat via objdump(1):
objdump -i
Praktiskt råd: i vanliga programbyggen körs ld oftast inte direkt. Använd normalt kompilatorn, till exempel gcc, och skicka länkoptioner med -Wl,.
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/ld.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.