ld(1): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= 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/ <BR><BR>Tack till [https://Datorservice.best Bromma Datorservice] som har sponsrat [https://www.linux.se Linux.se] med webbhotell. Kategori:Linuxmanual grupp 1 Kategori:Linuxmanual')
 
Ingen redigeringssammanfattning
 
Rad 1: Rad 1:
{{DISPLAYTITLE:ld(1)}}
== NAMN ==
'''ld''' – GNU-länkaren
== SYNOPSIS ==
<pre>
ld [optioner] objektfil ...
</pre>
== 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''':
<pre>
info ld
</pre>
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:
<pre>
COFF
a.out
ELF
</pre>
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:
<pre>
ld -o output /lib/crt0.o hello.o -lc
</pre>
Detta säger åt '''ld''' att skapa filen '''output''' genom att länka:
<pre>
/lib/crt0.o
hello.o
libc.a
</pre>
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:
<pre>
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
</pre>
För optioner som tar argument är det säkrast att använda sammanfogad form:
<pre>
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
</pre>
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:
<pre>
-l
-T
</pre>
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:
<pre>
No input files
</pre>
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:
<pre>
archive
shared
default
</pre>
: '''-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:
<pre>
objdump -i
</pre>
: Standardformatet kan tas från miljövariabeln:
<pre>
GNUTARGET
</pre>
'''-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:
<pre>
_fini
</pre>
'''-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:
<pre>
_init
</pre>
== 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:
<pre>
:filnamn
</pre>
söker '''ld''' efter exakt filnamn i bibliotekssökvägen.
: Annars söker '''ld''' efter:
<pre>
libnamnspec.a
</pre>
: På system med delade bibliotek kan '''ld''' även söka efter:
<pre>
libnamnspec.so
</pre>
före:
<pre>
libnamnspec.a
</pre>
: 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:
<pre>
--start-group
--end-group
</pre>
'''-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:
<pre>
a.out
</pre>
: 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:
<pre>
ld $(OBJS) -o $(EXE)
</pre>
Det är säkrare än:
<pre>
ld -o $(EXE) $(OBJS)
</pre>
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:
<pre>
.L
</pre>
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.
: För att [[ar(1)]], [[nm(1)]] och [[ranlib(1)]] ska kunna använda en kompilatorplugin behöver pluginen finnas i:
<pre>
${libdir}/bfd-plugins
</pre>
'''-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:
<pre>
-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
</pre>
: Ett vanligt användningsområde är '''pkg-config'''.
Exempel:
<pre>
-Wl,--push-state,--as-needed -libone -libtwo -Wl,--pop-state
</pre>
'''--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:
<pre>
/DISCARD/
</pre>
'''warn'''
: Placera sektionen som i '''place''', men skriv även en varning.
'''error'''
: Avsluta med fel om någon orphan section hittas.
: Standard är:
<pre>
place
</pre>
'''--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:
<pre>
combreloc
nocombreloc
common
nocommon
defs
undefs
cet-report=none
cet-report=warning
cet-report=error
common-page-size=värde
separate-code
</pre>
'''-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:
<pre>
ld -V
ld --verbose
</pre>
: Om '''-m''' inte används kan emulering tas från miljövariabeln:
<pre>
LDEMULATION
</pre>
'''-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 ==
<pre>
Copyright (c) 1991-2026 Free Software Foundation, Inc.
</pre>
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å:
<pre>
http://www.gnu.org/software/binutils/
</pre>
Felrapporter för manualsidan hänvisas till:
<pre>
http://sourceware.org/bugzilla/enter_bug.cgi?product=binutils
</pre>
Sidan hämtades från arkivet:
<pre>
binutils-with-gold-2.46.tar.gz
</pre>
Arkivet hämtades från:
<pre>
https://ftp.gnu.org/gnu/binutils/
</pre>
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:
<pre>
man-pages@man7.org
</pre>
== KORT SAMMANFATTNING ==
'''ld''' är GNU-länkaren.
Länka objektfiler till ett program:
<pre>
ld foo.o bar.o -o program
</pre>
Ange bibliotek:
<pre>
ld foo.o -L/usr/local/lib -lexempel -o program
</pre>
Skicka länkoption via GCC:
<pre>
gcc foo.o bar.o -Wl,-Map=program.map -o program
</pre>
Skapa länkkarta:
<pre>
ld foo.o bar.o -Map=program.map -o program
</pre>
Använd länkskript:
<pre>
ld -T script.ld foo.o -o program
</pre>
Skapa relokerbar, partiellt länkad objektfil:
<pre>
ld -r foo.o bar.o -o combined.o
</pre>
Spåra var en symbol förekommer:
<pre>
ld foo.o bar.o -y symbolnamn -o program
</pre>
Visa vilka filer som behandlas:
<pre>
ld -t foo.o bar.o -o program
</pre>
Visa version och emuleringar:
<pre>
ld -V
</pre>
Lista objektformat via [[objdump(1)]]:
<pre>
objdump -i
</pre>
'''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 =
= Sidslut =



Nuvarande version från 2 augusti 2026 kl. 11.11


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.
För att ar(1), nm(1) och ranlib(1) ska kunna använda en kompilatorplugin behöver pluginen finnas i:
${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

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.