Dit is de opdracht i686-linux-gnu-ld.bfd die kan worden uitgevoerd bij de gratis hostingprovider OnWorks met behulp van een van onze vele gratis online werkstations, zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
ld - De GNU-linker
KORTE INHOUD
ik [opties] objbestand ...
PRODUCTBESCHRIJVING
ld combineert een aantal object- en archiefbestanden, verplaatst hun gegevens
en koppelt symboolreferenties. Meestal de laatste stap bij het samenstellen van een
programma moet worden uitgevoerd ld.
ld accepteert Linker Command Language-bestanden geschreven in een superset van
AT&T's Link Editor Command Language-syntaxis, om expliciete en
totale controle over het koppelingsproces.
Deze man-pagina beschrijft de commandotaal niet; zie de ld toegang
in "info" voor volledige details over de commandotaal en over andere aspecten
van de GNU-linker.
Deze versie van ld gebruikt de algemene BFD-bibliotheken om op te werken
object bestanden. Dit maakt het mogelijk ld om objectbestanden te lezen, combineren en schrijven
in veel verschillende formaten --- bijvoorbeeld COFF of "a.out". Verschillend
formaten kunnen aan elkaar worden gekoppeld om elk beschikbaar soort object te produceren
bestand.
Afgezien van zijn flexibiliteit, is de GNU-linker nuttiger dan andere
schakels bij het verstrekken van diagnostische informatie. Veel linkers verlaten
uitvoering onmiddellijk bij het tegenkomen van een fout; wanneer mogelijk, ld
blijft uitvoeren, zodat u andere fouten kunt identificeren (of, in sommige gevallen)
gevallen, om ondanks de fout een uitvoerbestand te krijgen).
De GNU-linker ld is bedoeld om een breed scala aan situaties te dekken, en om
zo compatibel mogelijk zijn met andere linkers. Hierdoor heb je
veel keuzes om zijn gedrag te beheersen.
OPTIES
De linker ondersteunt een overvloed aan opdrachtregelopties, maar in werkelijkheid
praktijk weinig van hen worden gebruikt in een bepaalde context. Bijvoorbeeld,
een frequent gebruik van ld is om standaard Unix-objectbestanden te koppelen op a
standaard, ondersteund Unix-systeem. Op zo'n systeem, om een bestand te koppelen
"hallo.o":
ik wil /lib/crt0.o hallo.o -lc
Dit vertelt ld om een bestand te produceren met de naam uitvoer als resultaat van linken
het bestand "/lib/crt0.o" met "hello.o" en de bibliotheek "libc.a", die
komen uit de standaard zoekmappen. (Zie de bespreking van
the -l optie hieronder.)
Enkele van de opdrachtregelopties om ld kan op elk punt in . worden gespecificeerd
de opdrachtregel. Echter, opties die verwijzen naar bestanden, zoals -l or
-T, zorg ervoor dat het bestand wordt gelezen op het punt waarop de optie verschijnt
in de opdrachtregel, relatief ten opzichte van de objectbestanden en andere bestanden
opties. Het herhalen van niet-bestandsopties met een ander argument zal
hebben ofwel geen verder effect, of overschrijven eerdere gebeurtenissen (die
verder naar links op de opdrachtregel) van die optie. Opties die
zinvol kunnen worden gespecificeerd meer dan eens worden vermeld in de
beschrijvingen hieronder.
Niet-optie-argumenten zijn objectbestanden of archieven die moeten worden
verbonden. Ze kunnen volgen, voorafgaan aan of worden vermengd met
opdrachtregelopties, behalve dat een argument voor een objectbestand mogelijk niet
geplaatst tussen een optie en zijn argument.
Gewoonlijk wordt de linker aangeroepen met ten minste één objectbestand, maar u
kan andere vormen van binaire invoerbestanden specificeren met behulp van -l, -REn
script commando taal. Als geen binaire invoerbestanden zijn helemaal niet
gespecificeerd, de linker produceert geen uitvoer en geeft de
bericht Nee invoer bestanden.
Als de linker het formaat van een objectbestand niet kan herkennen, zal het:
neem aan dat het een linkerscript is. Een script dat op deze manier is gespecificeerd
vergroot het hoofdlinker-script dat voor de link wordt gebruikt (ofwel de standaard
linker-script of degene die is opgegeven met behulp van -T). Deze functie staat toe:
de linker om te linken naar een bestand dat lijkt op een object of een
archief, maar definieert eigenlijk slechts enkele symboolwaarden, of gebruik
"INPUT" of "GROUP" om andere objecten te laden. Een script hierin specificeren
manier vergroot alleen het hoofd-linker-script, met de extra opdrachten
geplaatst na het hoofdscript; gebruik de -T optie om de standaard te vervangen
linker-script volledig, maar let op het effect van de opdracht "INSERT".
Voor opties waarvan de naam uit één letter bestaat, moeten optieargumenten:
ofwel volg de letter van de optie zonder tussenliggende witruimte, of be
gegeven als afzonderlijke argumenten onmiddellijk na de optie dat:
vereist hen.
Voor opties waarvan de namen uit meerdere letters bestaan, één streepje of twee
kan voorafgaan aan de optienaam; bijvoorbeeld, -trace-symbool en
--trace-symbool gelijkwaardig zijn. Opmerking --- er is één uitzondering hierop:
regel. Opties voor meerdere letters die beginnen met een kleine 'o' kunnen
alleen worden voorafgegaan door twee streepjes. Dit is om verwarring met de
-o optie. Dus bijvoorbeeld -omagisch stelt de naam van het uitvoerbestand in op magie
terwijl --magisch zet de NMAGIC-vlag op de uitgang.
Argumenten voor meerletterige opties moeten worden gescheiden van de
optienaam door een gelijkteken, of als afzonderlijke argumenten worden gegeven
onmiddellijk na de optie die ze vereist. Bijvoorbeeld,
--trace-symbool foo en --trace-symbool=foo gelijkwaardig zijn. Uniek
afkortingen van de namen van meerletterige opties worden geaccepteerd.
Opmerking --- als de linker indirect wordt aangeroepen, via een compiler-stuurprogramma
(bv gcc) dan moeten alle linker-opdrachtregelopties worden voorafgegaan
by -Wl, (of wat dan ook geschikt is voor het specifieke compilerstuurprogramma)
soortgelijk:
gcc -Wl,--start-groep foo.o bar.o -Wl,--eind-groep
Dit is belangrijk, omdat anders het compilerstuurprogramma mogelijk
laat de linker-opties stil vallen, wat resulteert in een slechte link. Verwarring
kan ook optreden bij het doorgeven van opties die waarden vereisen via a
driver, omdat het gebruik van een spatie tussen optie en argument werkt als een
scheidingsteken, en zorgt ervoor dat het stuurprogramma alleen de optie doorgeeft aan de linker
en het argument aan de compiler. In dit geval is het het eenvoudigst te gebruiken
de samengevoegde vormen van zowel een- als meerletterige opties, zoals:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
Hier is een tabel met de generieke commandoregel-switches die worden geaccepteerd door de
GNU-linker:
@filet
Lees opdrachtregelopties van filet. De gelezen opties zijn ingevoegd
in plaats van de originele @filet optie. Indien filet bestaat niet, of
niet kan worden gelezen, dan wordt de optie letterlijk behandeld, en niet
verwijderd.
opties in filet worden gescheiden door witruimte. een witruimte
karakter kan in een optie worden opgenomen door het hele
optie tussen enkele of dubbele aanhalingstekens. Elk karakter (inclusief
een backslash) kan worden toegevoegd door het teken voor te zetten dat moet worden
inclusief backslash. De filet kan zelf aanvullende bevatten
@filet opties; dergelijke opties worden recursief verwerkt.
-a trefwoord
Deze optie wordt ondersteund voor HP/UX-compatibiliteit. De trefwoord
argument moet een van de strings zijn archief, gedeeldof verzuim.
-archief is functioneel gelijk aan -Bstatisch, en de andere twee
trefwoorden zijn functioneel equivalent aan -Bdynamisch. Deze optie kan
een willekeurig aantal keren worden gebruikt.
--controleren AUDITLIB
Voegt AUDITLIB naar de invoer "DT_AUDIT" van de dynamische sectie.
AUDITLIB wordt niet gecontroleerd op bestaan en zal ook geen gebruik maken van de
DT_SONAME opgegeven in de bibliotheek. Indien meerdere keren opgegeven
"DT_AUDIT" zal een door dubbele punten gescheiden lijst van audit-interfaces bevatten
gebruiken. Als de linker een object vindt met een controle-item terwijl
zoeken naar gedeelde bibliotheken, zal het een overeenkomstige
"DT_DEPAUDIT" invoer in het uitvoerbestand. Deze optie is alleen
zinvol op ELF-platforms die de rtld-audit-interface ondersteunen.
-A architectuur
--architectuur=architectuur
In de huidige release van ld, deze optie is alleen nuttig voor de
Intel 960-familie van architecturen. In dat ld configuratie, de
architectuur argument identificeert de specifieke architectuur in de
960-familie, waardoor enkele beveiligingen mogelijk zijn en het archief-
bibliotheek zoekpad.
Toekomstige releases van ld ondersteunt mogelijk vergelijkbare functionaliteit voor andere
architectuur families.
-b invoer formaat
--formaat=invoer formaat
ld kan worden geconfigureerd om meer dan één soort objectbestand te ondersteunen.
Als uw ld op deze manier is geconfigureerd, kunt u de -b optie om
specificeer het binaire formaat voor invoerobjectbestanden die hierop volgen
optie op de opdrachtregel. Zelfs wanneer ld is geconfigureerd om te ondersteunen
alternatieve objectformaten, hoeft u dit meestal niet op te geven,
as ld moet worden geconfigureerd om te verwachten dat als een standaard invoerformaat de
meest gebruikelijke formaat op elke machine. invoer formaat is een tekststring,
de naam van een bepaald formaat dat wordt ondersteund door de BFD-bibliotheken.
(U kunt de beschikbare binaire formaten weergeven met object -i.)
Misschien wilt u deze optie gebruiken als u bestanden koppelt met een
ongebruikelijk binair formaat. Je kan ook gebruiken -b formaten wisselen
expliciet (bij het koppelen van objectbestanden van verschillende formaten), door
waaronder -b invoer formaat voor elke groep objectbestanden in a
bepaald formaat.
Het standaardformaat is afkomstig uit de omgevingsvariabele
"GNUTARGET".
U kunt het invoerformaat ook definiëren vanuit een script, met behulp van de
commando "TARGET";
-c MRI-opdrachtbestand
--mri-script=MRI-opdrachtbestand
Voor compatibiliteit met linkers geproduceerd door MRI, ld accepteert script
bestanden geschreven in een alternatieve, beperkte commandotaal,
beschreven in de sectie MRI Compatible Script Files van GNU ld
documentatie. Introduceer MRI-scriptbestanden met de optie -c; gebruik
the -T optie om linkerscripts uit te voeren die zijn geschreven in het algemene doel
ld scripttaal. Als MRI-cmd-bestand bestaat niet, ld zoekt naar
het in de mappen gespecificeerd door any -L opties.
-d
-gelijkstroom
-dp Deze drie opties zijn gelijkwaardig; meerdere formulieren worden ondersteund
voor compatibiliteit met andere linkers. Ze wijzen ruimte toe aan common
symbolen, zelfs als een verplaatsbaar uitvoerbestand is opgegeven (met -r).
De scriptopdracht "FORCE_COMMON_ALLOCATION" heeft hetzelfde effect.
--depaudit AUDITLIB
-P AUDITLIB
Voegt AUDITLIB naar de invoer "DT_DEPAUDIT" van de dynamische sectie.
AUDITLIB wordt niet gecontroleerd op bestaan en zal ook geen gebruik maken van de
DT_SONAME opgegeven in de bibliotheek. Indien meerdere keren opgegeven
"DT_DEPAUDIT" zal een door dubbele punten gescheiden lijst van audit bevatten
interfaces te gebruiken. Deze optie is alleen zinvol op ELF-platforms
ondersteuning van de rtld-audit-interface. De -P optie is voorzien voor
Solaris-compatibiliteit.
-e toegang
--invoer=toegang
Gebruik toegang als het expliciete symbool voor het starten van de uitvoering van uw
programma, in plaats van het standaardinvoerpunt. Als er geen
symbool genaamd toegang, de linker zal proberen te ontleden toegang als een nummer,
en gebruik dat als het invoeradres (het nummer wordt geïnterpreteerd
in basis 10; je mag een leidende gebruiken 0x voor basis 16, of een leidende 0
voor basis 8).
--exclude-libs lib,lib, ...
Specificeert een lijst met archiefbibliotheken waarvan symbolen niet mogen
automatisch worden geëxporteerd. De bibliotheeknamen kunnen worden gescheiden door:
komma's of dubbele punten. Het specificeren van "--exclude-libs ALL" sluit symbolen uit
in alle archiefbibliotheken van automatische export. Deze optie is
alleen beschikbaar voor de i386 PE-gerichte poort van de linker en voor
ELF-gerichte poorten. Voor i386 PE worden symbolen expliciet vermeld in a
.def-bestand worden nog steeds geëxporteerd, ongeacht deze optie. Voor ELF
gerichte poorten, symbolen die door deze optie worden beïnvloed, worden behandeld als:
verborgen.
--exclude-modules-voor-implib module,module, ...
Specificeert een lijst met objectbestanden of archiefleden, waaruit:
symbolen zouden niet automatisch moeten worden geëxporteerd, maar die zouden moeten worden
groothandel gekopieerd naar de importbibliotheek die wordt gegenereerd tijdens de
koppeling. De modulenamen kunnen worden gescheiden door komma's of dubbele punten, en
moet exact overeenkomen met de bestandsnamen die worden gebruikt door ld om de bestanden te openen; voor
archiefleden, dit is gewoon de naam van het lid, maar dan voor object
bestanden die de vermelde naam moet bevatten en exact overeenkomen met elk pad
gebruikt om het invoerbestand op de opdrachtregel van de linker te specificeren. Deze
optie is alleen beschikbaar voor de i386 PE-gerichte poort van de
koppelaar. Symbolen die expliciet in een .def-bestand worden vermeld, zijn nog steeds
geëxporteerd, ongeacht deze optie.
-E
--export-dynamisch
--geen-export-dynamisch
Wanneer u een dynamisch gekoppeld uitvoerbaar bestand maakt, gebruikt u de -E optie
of de --export-dynamisch optie zorgt ervoor dat de linker alle symbolen toevoegt
naar de dynamische symbolentabel. De dynamische symbolentabel is de set
van symbolen die tijdens runtime zichtbaar zijn vanuit dynamische objecten.
Als u geen van deze opties gebruikt (of de
--geen-export-dynamisch optie om het standaardgedrag te herstellen), de
dynamische symbolentabel bevat normaal gesproken alleen die symbolen die:
waarnaar wordt verwezen door een dynamisch object dat in de link wordt genoemd.
Als u "dlopen" gebruikt om een dynamisch object te laden dat moet verwijzen
terug naar de symbolen die door het programma zijn gedefinieerd, in plaats van een ander
dynamisch object, dan zult u deze optie waarschijnlijk moeten gebruiken wanneer:
het programma zelf koppelen.
U kunt ook de dynamische lijst gebruiken om te bepalen welke symbolen moeten worden
toegevoegd aan de dynamische symbolentabel als het uitvoerformaat dit ondersteunt.
Zie de beschrijving van --dynamische-lijst.
Merk op dat deze optie specifiek is voor ELF-gerichte poorten. PE
doelen ondersteunen een vergelijkbare functie om alle symbolen uit een DLL te exporteren
of EXE; zie de beschrijving van --export-alle-symbolen hieronder.
-EB Koppel big-endian-objecten. Dit heeft invloed op het standaard uitvoerformaat.
-DE Koppel little-endian-objecten. Dit heeft invloed op de standaarduitvoer
formaat.
-f naam
--hulp=naam
Wanneer u een gedeeld ELF-object maakt, stelt u de interne DT_AUXILIARY in
veld naar de opgegeven naam. Dit vertelt de dynamische linker dat:
de symbooltabel van het gedeelde object moet worden gebruikt als een
hulpfilter op de symbooltabel van het gedeelde object naam.
Als u later een programma aan dit filterobject koppelt, dan, wanneer
u het programma uitvoert, ziet de dynamische linker de DT_AUXILIARY
veld. Als de dynamische linker symbolen uit het filter oplost
object, zal het eerst controleren of er een definitie in de
gedeeld object naam. Als er een is, wordt deze gebruikt in plaats van
de definitie in het filterobject. Het gedeelde object naam genoodzaakt bent
bestaat niet. Dus het gedeelde object naam kan worden gebruikt om een
alternatieve implementatie van bepaalde functies, misschien voor
foutopsporing of voor machinespecifieke prestaties.
Deze optie kan meerdere keren worden opgegeven. De DT_AUXILIARY
vermeldingen worden gemaakt in de volgorde waarin ze verschijnen op de
opdrachtregel.
-F naam
--filter =naam
Stel bij het maken van een gedeeld ELF-object de interne DT_FILTER in
veld naar de opgegeven naam. Dit vertelt de dynamische linker dat:
de symbooltabel van het gedeelde object dat wordt gemaakt, zou moeten
worden gebruikt als een filter op de symbooltabel van het gedeelde object naam.
Als u later een programma aan dit filterobject koppelt, dan, wanneer
u het programma uitvoert, ziet de dynamische linker de DT_FILTER
veld. De dynamische linker zal symbolen oplossen volgens de
symbooltabel van het filterobject zoals gewoonlijk, maar het zal in werkelijkheid
link naar de definities in het gedeelde object naam. Dus de
filterobject kan worden gebruikt om een subset van de symbolen te selecteren
geleverd door het object naam.
Sommige oudere linkers gebruikten de -F optie in een compilatie
toolchain voor het specificeren van het object-bestandsformaat voor zowel invoer als
output object bestanden. De GNU-linker gebruikt hiervoor andere mechanismen
doel: de -b, --formaat, --oformat opties, het "TARGET"-commando
in linkerscripts en de omgevingsvariabele "GNUTARGET". De
GNU linker negeert de -F optie bij het niet aanmaken van een ELF
gedeeld voorwerp.
-fini=naam
Als u een ELF-uitvoerbaar of gedeeld object maakt, roept u NAME wanneer
het uitvoerbare of gedeelde object wordt verwijderd door DT_FINI in te stellen op
het adres van de functie. Standaard gebruikt de linker "_fini"
als de functie die moet worden aangeroepen.
-g Buiten beschouwing gelaten. Geleverd voor compatibiliteit met andere tools.
-G waarde
--gpgrootte=waarde
Stel de maximale grootte in van objecten die moeten worden geoptimaliseerd met behulp van de GP
registreren bij lengte van de duwkabel. Dit is alleen zinvol voor bestandsindelingen voor objecten
zoals MIPS ELF die ondersteuning bieden voor het plaatsen van grote en kleine objecten in
verschillende secties. Dit wordt genegeerd voor andere bestandsindelingen voor objecten.
-h naam
-zonaam=naam
Stel bij het maken van een gedeeld ELF-object de interne DT_SONAME in
veld naar de opgegeven naam. Wanneer een uitvoerbaar bestand is gekoppeld aan een
gedeeld object dat een DT_SONAME-veld heeft, en wanneer het uitvoerbare bestand
wordt uitgevoerd, zal de dynamische linker proberen het gedeelde object te laden
gespecificeerd door het veld DT_SONAME in plaats van het gebruik van het bestand
naam gegeven aan de linker.
-i Voer een incrementele link uit (zelfde als optie -r).
-begin=naam
Als u een ELF-uitvoerbaar of gedeeld object maakt, roept u NAME wanneer
het uitvoerbare of gedeelde object wordt geladen door DT_INIT in te stellen op
het adres van de functie. Standaard gebruikt de linker "_init"
als de functie die moet worden aangeroepen.
-l naamspecificatie
--bibliotheek=naamspecificatie
Voeg het archief- of objectbestand toe gespecificeerd door naamspecificatie naar de lijst van
bestanden te koppelen. Deze optie kan een willekeurig aantal keren worden gebruikt. Als
naamspecificatie is van de vorm :bestandsnaam, ld zal het bibliotheekpad doorzoeken
voor een bestand genaamd bestandsnaam, anders wordt de bibliotheek doorzocht
pad voor een bestand met de naam libnaamspec.a.
Op systemen die gedeelde bibliotheken ondersteunen, ld kan ook zoeken naar
andere bestanden dan libnaamspec.a. Met name op ELF en SunOS
systemen, ld zal in een map zoeken naar een bibliotheek met de naam
libnaamspec.so alvorens te zoeken naar een genaamd libnaamspec.a. (Door
conventie, een ".so" extensie geeft een gedeelde bibliotheek aan.) Opmerkingen
dat dit gedrag niet van toepassing is op :bestandsnaam, wat altijd
specificeert een bestand genaamd bestandsnaam.
De linker doorzoekt een archief slechts één keer, op de locatie waar
het wordt gespecificeerd op de opdrachtregel. Als het archief een
symbool dat ongedefinieerd was in een object dat verscheen vóór de
archief op de opdrachtregel, de linker bevat de
juiste bestand(en) uit het archief. Echter, een ongedefinieerd symbool
in een object dat later op de opdrachtregel verschijnt, veroorzaakt niet de
linker om het archief opnieuw te doorzoeken.
Zie de -( optie voor een manier om de linker te dwingen archieven te doorzoeken
meerdere keren.
U kunt hetzelfde archief meerdere keren op de opdrachtregel weergeven.
Dit type zoeken in archieven is standaard voor Unix-linkers.
Als u echter gebruikt ld op AIX, merk op dat het anders is dan:
het gedrag van de AIX-linker.
-L zoekmap
--bibliotheek-pad=zoekmap
Pad toevoegen zoekmap naar de lijst met paden die ld zal zoeken naar
archiefbibliotheken en ld controle scripts. U kunt deze optie gebruiken
een willekeurig aantal keren. De mappen worden doorzocht in de volgorde waarin
die ze zijn opgegeven op de opdrachtregel. Directory's
gespecificeerd op de opdrachtregel worden doorzocht vóór de standaard
mappen. Allemaal -L opties gelden voor iedereen -l opties, ongeacht
de volgorde waarin de opties verschijnen. -L opties hebben geen invloed op
hoe ld zoekt naar een linkerscript tenzij -T optie is opgegeven.
If zoekmap begint met "=", dan wordt "=" vervangen door de
systeemroot voorvoegsel, gecontroleerd door de --sysroot optie, of opgegeven
wanneer de linker is geconfigureerd.
De standaard set van gezochte paden (zonder te specificeren met -L)
hangt af van welke emulatiemodus ld gebruikt, en in sommige gevallen ook
over hoe het is geconfigureerd.
De paden kunnen ook worden opgegeven in een linkscript met de
"SEARCH_DIR" commando. Op deze manier gespecificeerde mappen worden doorzocht
op het punt waarop het linkerscript in de opdracht verschijnt
lijn.
-m wedijver
emuleren de wedijver koppelaar. U kunt een lijst maken van de beschikbare
emulaties met de --uitgebreid or -V opties.
Indien de -m optie niet wordt gebruikt, wordt de emulatie overgenomen van de
"LDEMULATION" omgevingsvariabele, als die is gedefinieerd.
Anders hangt de standaardemulatie af van hoe de linker was
geconfigureerd.
-M
--print-kaart
Druk een linkmap af naar de standaarduitvoer. Een linkkaart biedt:
informatie over de link, waaronder het volgende:
· Waar objectbestanden worden toegewezen aan het geheugen.
· Hoe gemeenschappelijke symbolen worden toegewezen.
· Alle archiefleden opgenomen in de link, met vermelding van de
symbool waardoor het archieflid werd binnengebracht.
· De waarden die aan symbolen zijn toegewezen.
Opmerking - symbolen waarvan de waarden worden berekend door een uitdrukking die
verwijst naar een eerdere waarde van hetzelfde symbool may
het juiste resultaat wordt niet weergegeven in de linkkaart. Dit is
omdat de linker tussenresultaten weggooit en alleen
behoudt de uiteindelijke waarde van een uitdrukking. onder zulke
omstandigheden zal de linker de bijgevoegde uiteindelijke waarde weergeven
door vierkante haken. Dus bijvoorbeeld een linkerscript
met daarin:
foe = 1
foe = foe * 4
foe = foe + 8
zal de volgende uitvoer in de linkmap produceren als de -M
optie wordt gebruikt:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
Bekijk Uitdrukkingen voor meer informatie over uitdrukkingen in
linker-scripts.
-n
--magisch
Schakel pagina-uitlijning van secties uit en schakel koppelingen tegen uit
gedeelde bibliotheken. Als het uitvoerformaat Unix-stijl magie ondersteunt
nummers markeert u de uitvoer als "NMAGIC".
-N
--magisch
Stel de tekst- en gegevenssecties in om leesbaar en beschrijfbaar te zijn. Ook,
lijn het gegevenssegment niet uit met pagina's en schakel het koppelen uit tegen
gedeelde bibliotheken. Als het uitvoerformaat Unix-stijl magie ondersteunt
nummers markeert u de uitvoer als "OMAGIC". Opmerking: hoewel een beschrijfbaar
tekstsectie is toegestaan voor PE-COFF-doelen, het voldoet niet aan
de formaatspecificatie gepubliceerd door Microsoft.
--geen-magisch
Deze optie heft de meeste effecten van de -N optie. Het zet
de tekstsectie om alleen-lezen te zijn, en dwingt het gegevenssegment om
pagina-uitgelijnd. Let op - met deze optie is het niet mogelijk om te linken tegen
gedeelde bibliotheken. Gebruiken -Bdynamisch voor deze.
-o uitvoer
--uitvoer=uitvoer
Gebruik uitvoer als de naam voor het programma geproduceerd door ld; als dit
optie is niet gespecificeerd, de naam a.out wordt standaard gebruikt. De
scriptopdracht "OUTPUT" kan ook de naam van het uitvoerbestand specificeren.
-O niveau
If niveau is een numerieke waarde groter dan nul ld optimaliseert de
uitvoer. Dit kan aanzienlijk langer duren en daarom
zou waarschijnlijk alleen moeten worden ingeschakeld voor het laatste binaire bestand. Bij de
moment heeft deze optie alleen invloed op het genereren van gedeelde ELF-bibliotheken.
Toekomstige releases van de linker kunnen meer gebruik maken van deze optie.
Ook is er momenteel geen verschil in het gedrag van de linker voor
verschillende niet-nulwaarden van deze optie. Nogmaals, dit kan veranderen
met toekomstige uitgaven.
--push-status
De --push-status maakt het mogelijk om de huidige staat van de vlaggen te behouden
die de verwerking van het invoerbestand regelen, zodat ze allemaal kunnen worden
hersteld met een overeenkomstige --pop-staat optie.
De opties die worden gedekt zijn: -Bdynamisch, -Bstatisch, -dn, -dy,
-bel_gedeeld, -niet_gedeeld, -statisch, -N, -n, --geheel-archief,
--geen-geheel-archief, -r, -Uw, --copy-dt-nodige-invoeren,
--no-copy-dt-nodige-invoeren, --als-nodig, --niet-zoals-nodigen -a.
Een doel voor deze optie zijn specificaties voor: pkg-config. Wanneer
gebruikt met de --lib optie alle eventueel benodigde bibliotheken zijn
vermeld en vervolgens mogelijk gekoppeld aan de hele tijd. Het is beter om
iets teruggeven als volgt:
-Wl,--push-state,--zoals nodig -libone -libtwo -Wl,--pop-state
Maakt het effect van --push-state ongedaan, herstelt de vorige waarden van
de vlaggen die de verwerking van invoerbestanden regelen.
-q
--uitzenden-relocs
Verlaat secties en inhoud van verhuizingen in volledig gekoppelde uitvoerbare bestanden.
Hulpprogramma's voor analyse van links en optimalisatie hebben deze informatie mogelijk nodig
om de juiste wijzigingen van uitvoerbare bestanden uit te voeren. Deze
resulteert in grotere uitvoerbare bestanden.
Deze optie wordt momenteel alleen ondersteund op ELF-platforms.
--kracht-dynamisch
Forceer het uitvoerbestand om dynamische secties te hebben. Deze optie is
specifiek voor VxWorks-doelen.
-r
--verplaatsbaar
Genereer verplaatsbare uitvoer --- dwz genereer een uitvoerbestand dat:
kan op zijn beurt dienen als input voor ld. Dit wordt vaak genoemd partieel
Koppeling. Als bijwerking, in omgevingen die standaard ondersteunen
Unix magische getallen, deze optie stelt ook de magie van het uitvoerbestand in
nummer naar "OMAGIC". Als deze optie niet is opgegeven, wordt een absoluut
bestand wordt geproduceerd. Bij het koppelen van C++-programma's is deze optie wil niet
verwijzingen naar constructeurs oplossen; om dat te doen, gebruik -Uw.
Wanneer een invoerbestand niet hetzelfde formaat heeft als de uitvoer
bestand, wordt gedeeltelijke koppeling alleen ondersteund als dat invoerbestand dat niet doet
eventuele verhuizingen bevatten. Verschillende uitvoerformaten kunnen verder
beperkingen; sommige op "a.out" gebaseerde formaten ondersteunen bijvoorbeeld niet
gedeeltelijke koppeling met invoerbestanden in andere formaten.
Deze optie doet hetzelfde als -i.
-R bestandsnaam
--alleen-symbolen=bestandsnaam
Lees symboolnamen en hun adressen uit bestandsnaam, maar doe niet
verplaats het of neem het op in de uitvoer. Hierdoor kan uw output
bestand om symbolisch te verwijzen naar absolute locaties van het gedefinieerde geheugen
in andere programma's. U kunt deze optie meer dan eens gebruiken.
Voor compatibiliteit met andere ELF-linkers, als de -R Optie is
gevolgd door een mapnaam, in plaats van een bestandsnaam, het is
behandeld als de -rpad optie.
-s
--strip-alles
Laat alle symboolinformatie uit het uitvoerbestand weg.
-S
--strip-debuggen
Laat debugger-symboolinformatie weg (maar niet alle symbolen) uit de
uitvoer bestand.
-t
--spoor
Druk de namen van de invoerbestanden af als ld verwerkt ze.
-T Script bestand
--script=Script bestand
Gebruik Script bestand als het linkerscript. Dit script vervangt ld's
standaard linkerscript (in plaats van eraan toe te voegen), dus commandobestand
moet alles specificeren wat nodig is om het uitvoerbestand te beschrijven.
If Script bestand bestaat niet in de huidige map, "ld" ziet eruit
ervoor in de mappen gespecificeerd door een van de voorgaande -L opties.
meervoudig -T opties stapelen zich op.
-DT Script bestand
--standaard-script=Script bestand
Gebruik Script bestand als het standaard linkerscript.
Deze optie is vergelijkbaar met de --script optie behalve dat
verwerking van het script wordt uitgesteld tot na de rest van de
opdrachtregel is verwerkt. Hierdoor kunnen opties worden geplaatst na
the --standaard-script optie op de opdrachtregel om de . te beïnvloeden
gedrag van het linkerscript, wat belangrijk kan zijn wanneer de
linker-opdrachtregel kan niet rechtstreeks door de gebruiker worden beheerd. (bijv
omdat de opdrachtregel wordt geconstrueerd door een ander hulpmiddel, zoals:
as gcc).
-u symbool
--ongedefinieerd=symbool
Dwingen symbool om in het uitvoerbestand te worden ingevoerd als een undefined
symbool. Als u dit doet, kan dit bijvoorbeeld leiden tot het koppelen van extra
modules uit standaardbibliotheken. -u kan worden herhaald met verschillende
optieargumenten om extra ongedefinieerde symbolen in te voeren. Deze
optie is gelijk aan de "EXTERN" linker scriptopdracht.
Als deze optie wordt gebruikt om extra modules te forceren,
in de link getrokken, en als het een fout is voor het symbool om
ongedefinieerd blijven, dan is de optie --vereis-gedefinieerd zou gebruikt moeten worden
gebruiken.
--require-gedefinieerd=symbool
Vereisen dat symbool is gedefinieerd in het uitvoerbestand. Deze optie is
hetzelfde als optie --onbepaald behalve dat als symbool is niet gedefinieerd
in het uitvoerbestand, dan zal de linker een foutmelding geven en afsluiten.
Hetzelfde effect kan worden bereikt in een linkerscript door gebruik te maken van
"EXTERN", "ASSERT" en "DEFINED" samen. Deze optie kan worden gebruikt
meerdere keren om extra symbolen te vereisen.
-Uw Voor iets anders dan C++-programma's is deze optie gelijk aan:
-r: het genereert verplaatsbare uitvoer --- dat wil zeggen, een uitvoerbestand dat kan
dienen op hun beurt als input voor ld. Bij het koppelen van C++-programma's, -Uw doet
verwijzingen naar constructors oplossen, in tegenstelling tot -r. Het werkt niet om
. -Uw op bestanden die zelf waren gekoppeld aan -Uw zodra de
constructortabel is gebouwd, kan er niet aan worden toegevoegd. Gebruik maken van -Uw
alleen voor de laatste gedeeltelijke link, en -r voor de anderen.
--wees-handling=MODE
Bepaal hoe weessecties worden afgehandeld. Een weesgedeelte is één
niet specifiek genoemd in een linkerscript.
MODE kan een van de volgende waarden hebben:
"plaats"
Weessecties worden in een geschikte uitvoersectie geplaatst
volgens de strategie beschreven in Wees Secties. De
optie --uniek heeft ook invloed op hoe secties worden geplaatst.
"weggooien"
Alle weessecties worden weggegooid door ze in de
/WEGGOOIEN/ pagina.
"waarschuwen"
De linker zal de weessectie plaatsen zoals voor "plaats" en
ook een waarschuwing geven.
"fout"
De linker zal afsluiten met een fout als een weessectie is
gevonden.
De standaard als --behandeling van weeskinderen niet is gegeven is "plaats".
--uniek[=SECTIE]
Creëert een aparte uitvoersectie voor elke overeenkomende invoersectie
SECTIE, of als het optionele jokerteken SECTIE argument ontbreekt,
voor elke weesinvoersectie. Een weesgedeelte is er een niet
specifiek genoemd in een linkerscript. U kunt deze optie gebruiken
meerdere keren op de opdrachtregel; Het voorkomt de normale samenvoeging
van invoersecties met dezelfde naam, overschrijven uitvoersecties
opdrachten in een linkerscript.
-v
--versie
-V Geef het versienummer weer voor ld. De -V optie vermeldt ook de
ondersteunde emulaties.
-x
--alles weggooien
Verwijder alle lokale symbolen.
-X
--gooi de lokale bevolking weg
Verwijder alle tijdelijke lokale symbolen. (Deze symbolen beginnen met
systeemspecifieke lokale labelprefixen, meestal .L voor ELF-systemen
or L voor traditionele a.out-systemen.)
-y symbool
--trace-symbool=symbool
Druk de naam af van elk gekoppeld bestand waarin: symbool verschijnt. Deze
optie kan een willekeurig aantal keren worden gegeven. Op veel systemen is het
nodig om een onderstrepingsteken te plaatsen.
Deze optie is handig wanneer u een ongedefinieerd symbool in uw
link maar weet niet waar de verwijzing vandaan komt.
-Y pad
Toevoegen pad naar het standaard bibliotheekzoekpad. Deze optie bestaat
voor Solaris-compatibiliteit.
-z trefwoord
De erkende trefwoorden zijn:
combiloc
Combineert meerdere verplaatsingssecties en sorteert ze om dynamisch te maken
symbool opzoeken caching mogelijk.
defs
Niet-gedefinieerde symbolen in objectbestanden zijn niet toegestaan. Ongedefinieerde symbolen
in gedeelde bibliotheken zijn nog steeds toegestaan.
uitvoerstapel
Markeert het object als een uitvoerbare stapel vereist.
globaal
Deze optie is alleen zinvol bij het bouwen van een gedeeld object.
Het maakt de symbolen die door dit gedeelde object zijn gedefinieerd beschikbaar
voor symboolresolutie van later geladen bibliotheken.
eerst
Deze optie is alleen zinvol bij het bouwen van een gedeeld object.
Het markeert het object zodat de runtime-initialisatie zal
plaatsvinden vóór de runtime-initialisatie van andere objecten
tegelijkertijd in het proces gebracht. evenzo de
runtime-finalisatie van het object vindt plaats na de runtime
afronding van andere objecten.
tussenbeide komen
Markeert het object dat de symbooltabel vóór alles plaatst
symbolen, maar het primaire uitvoerbare bestand.
lui
Wanneer u een uitvoerbare of gedeelde bibliotheek genereert, markeert u deze als:
vertel de dynamische linker om de oplossing van de functieaanroep uit te stellen naar:
het punt waarop de functie wordt aangeroepen (luie binding), eerder
dan tijdens het laden. Lazy binding is de standaard.
laadfltr
Markeert het object waarvan de filters onmiddellijk worden verwerkt bij
looptijd.
Muldefs
Staat meerdere definities toe.
geencombreloc
Schakelt het combineren van meerdere verplaatsingssecties uit.
nocopyreloc
Schakel door de linker gegenereerde .dynbss-variabelen uit die worden gebruikt in plaats van
variabelen gedefinieerd in gedeelde bibliotheken. Kan resulteren in dynamiek
tekst verhuizingen.
knooppuntdefaultlib
Markeert het object dat de zoektocht naar afhankelijkheden hiervan
object negeert alle standaard bibliotheekzoekpaden.
knooppunt
Markeert dat het object niet tijdens runtime moet worden verwijderd.
knikken
Markeert het object niet beschikbaar voor "dlopen".
nodump
Geeft aan dat het object niet kan worden gedumpt door "dldump".
geenexecstack
Markeert het object als geen uitvoerbare stapel vereist.
tekst
Behandel DT_TEXTREL in gedeeld object als fout.
geen tekst
Behandel DT_TEXTREL in een gedeeld object niet als een fout.
tekstuit
Behandel DT_TEXTREL in een gedeeld object niet als een fout.
norelro
Maak geen ELF "PT_GNU_RELRO" segmentkoptekst in de
voorwerp.
nu Wanneer u een uitvoerbare of gedeelde bibliotheek genereert, markeert u deze als:
vertel de dynamische linker om alle symbolen op te lossen wanneer het programma
is gestart, of wanneer de gedeelde bibliotheek is gekoppeld aan het gebruik van
dlopen, in plaats van de oplossing van functieaanroepen uit te stellen naar de
punt wanneer de functie voor het eerst wordt aangeroepen.
herkomst
Markeert dat het object $ORIGIN mag bevatten.
terug
Maak een ELF "PT_GNU_RELRO" segmentkoptekst in het object.
max-paginagrootte=waarde
Stel het maximale paginaformaat voor emulatie in op waarde.
common-page-size=waarde
Stel het gemeenschappelijke paginaformaat voor emulatie in op waarde.
stapelgrootte=waarde
Specificeer een stapelgrootte voor in een ELF "PT_GNU_STACK" segment.
Als u nul opgeeft, wordt elke standaard grootte die niet nul is, overschreven
"PT_GNU_STACK" segment maken.
bndplt
Genereer altijd BND-prefix in PLT-vermeldingen. Ondersteund voor
Linux/x86_64.
geen extern beveiligde gegevens
Behandel het beschermde gegevenssymbool niet als extern bij het bouwen
gedeelde bibliotheek. Deze optie heft de standaard van de linker-backend op.
Het kan worden gebruikt om onjuiste verhuizingen tegen te gaan:
beschermde datasymbolen gegenereerd door compiler. Updates op
beveiligde datasymbolen door een andere module zijn niet zichtbaar voor de
resulterende gedeelde bibliotheek. Ondersteund voor i386 en x86-64.
call-nop=voorvoegsel-adr
call-nop=voorvoegsel-nop
call-nop=achtervoegsel-nop
call-nop=voorvoegsel-byte
call-nop=achtervoegsel-byte
Specificeer de 1-byte "NOP" opvulling bij het transformeren van indirect
oproep naar een lokaal gedefinieerde functie, foo, via de GOT-sleuf.
call-nop=voorvoegsel-adr genereert "0x67 call foo".
call-nop=voorvoegsel-nop genereert "0x90 call foo".
call-nop=achtervoegsel-nop genereert "call foo 0x90".
call-nop=voorvoegsel-byte genereert "byte Bellen foo".
call-nop=achtervoegsel-byte genereert "call foo" byte". Ondersteund voor
i386 en x86_64.
Andere trefwoorden worden genegeerd voor compatibiliteit met Solaris.
-( archief -)
--start-groep archief --eindgroep
De archief zou een lijst met archiefbestanden moeten zijn. Ze kunnen ofwel zijn
expliciete bestandsnamen, of -l opties.
De opgegeven archieven worden herhaaldelijk doorzocht totdat er geen nieuwe
ongedefinieerde referenties worden gecreëerd. Normaal gesproken wordt een archief doorzocht
slechts één keer in de volgorde waarin deze is opgegeven op de opdrachtregel.
Als een symbool in dat archief nodig is om een ongedefinieerd probleem op te lossen
symbool waarnaar wordt verwezen door een object in een archief dat later verschijnt
de opdrachtregel, zou de linker dat niet kunnen oplossen
referentie. Door de archieven te groeperen, kunnen ze allemaal worden doorzocht
totdat alle mogelijke verwijzingen zijn opgelost.
Het gebruik van deze optie brengt aanzienlijke prestatiekosten met zich mee. Het is het beste
om het alleen te gebruiken als er onvermijdelijke kringverwijzingen zijn
tussen twee of meer archieven.
ccept-unknown-ingang-arch
--geen-accepteer-onbekende-invoerarch
Vertelt de linker om invoerbestanden te accepteren waarvan de architectuur niet kan zijn
erkend. De veronderstelling is dat de gebruiker weet wat ze zijn
doet en wil bewust in deze onbekende invoerbestanden linken.
Dit was het standaardgedrag van de linker, vóór release 2.14.
Het standaardgedrag vanaf release 2.14 is om dergelijke te weigeren
invoerbestanden, en dus de ccept-unknown-ingang-arch optie is geweest
toegevoegd om het oude gedrag te herstellen.
--als-nodig
--niet-zoals-nodig
Deze optie is van invloed op ELF DT_NEEDED-tags voor dynamische bibliotheken
vermeld op de opdrachtregel na de --als-nodig optie.
Normaal gesproken voegt de linker een DT_NEEDED-tag toe voor elke dynamiek
bibliotheek vermeld op de opdrachtregel, ongeacht of de
bibliotheek daadwerkelijk nodig is of niet. --als-nodig veroorzaakt een DT_NEEDED
tag die alleen wordt verzonden voor een bibliotheek die at uit die punt in the link
voldoet aan een niet-zwakke ongedefinieerde symboolreferentie van een reguliere
object-bestand of, als de bibliotheek niet wordt gevonden in de DT_NEEDED-lijsten
van andere benodigde bibliotheken, een niet-zwakke ongedefinieerde symboolreferentie
van een andere benodigde dynamische bibliotheek. Objectbestanden of bibliotheken
verschijnen op de opdrachtregel na de bibliotheek in kwestie niet
invloed hebben op de vraag of de bibliotheek als nodig wordt beschouwd. Dit is vergelijkbaar met
de regels voor het extraheren van objectbestanden uit archieven.
--niet-zoals-nodig herstelt het standaardgedrag.
--toevoegen-nodig
--geen-toevoegen-nodig
Deze twee opties zijn verouderd vanwege de gelijkenis van:
hun namen naar de --als-nodig en --niet-zoals-nodig opties. Zij
zijn vervangen door --copy-dt-nodige-invoeren en
--no-copy-dt-nodige-invoeren.
-beweren trefwoord
Deze optie wordt genegeerd voor compatibiliteit met SunOS.
-Bdynamisch
-dy
-bel_gedeeld
Link tegen dynamische bibliotheken. Dit is alleen zinvol op
platforms waarvoor gedeelde bibliotheken worden ondersteund. Deze optie is
normaal gesproken de standaard op dergelijke platforms. De verschillende varianten van
deze optie is voor compatibiliteit met verschillende systemen. Jij mag
gebruik deze optie meerdere keren op de opdrachtregel: het beïnvloedt
bibliotheek zoeken naar -l opties die erop volgen.
-Bgroep
Zet de vlag "DF_1_GROUP" in het item "DT_FLAGS_1" in de dynamische
sectie. Dit zorgt ervoor dat de runtime-linker zoekopdrachten hierin afhandelt
object en zijn afhankelijkheden alleen binnen de groep uit te voeren.
--unresolved-symbols=alles rapporteren wordt geïmpliceerd. Deze optie is alleen
zinvol op ELF-platforms die gedeelde bibliotheken ondersteunen.
-Bstatisch
-dn
-niet_gedeeld
-statisch
Link niet naar gedeelde bibliotheken. Dit is alleen zinvol op
platforms waarvoor gedeelde bibliotheken worden ondersteund. Het verschil
varianten van deze optie zijn voor compatibiliteit met verschillende systemen.
U kunt deze optie meerdere keren gebruiken op de opdrachtregel: it
beïnvloedt bibliotheek zoeken naar -l opties die erop volgen. Dit
optie houdt ook in: --unresolved-symbols=alles rapporteren. Deze optie
kan worden gebruikt met -gedeeld. Dit betekent dat een gedeelde bibliotheek is
wordt gemaakt, maar dat alle externe verwijzingen van de bibliotheek
moet worden opgelost door vermeldingen uit statische bibliotheken op te halen.
-Bsymbolisch
Bind bij het maken van een gedeelde bibliotheek verwijzingen naar globale symbolen
aan de definitie in de gedeelde bibliotheek, indien aanwezig. Normaal gesproken is het
is het mogelijk voor een programma dat is gekoppeld aan een gedeelde bibliotheek om
overschrijf de definitie binnen de gedeelde bibliotheek. Deze optie kan
ook te gebruiken met de --export-dynamisch optie, bij het maken van een
positie onafhankelijk uitvoerbaar, om verwijzingen naar global . te binden
symbolen naar de definitie in het uitvoerbare bestand. Deze optie is
alleen zinvol op ELF-platforms die gedeelde bibliotheken ondersteunen en
positie-onafhankelijke uitvoerbare bestanden.
-Bsymbolische-functies
Bind bij het maken van een gedeelde bibliotheek verwijzingen naar de globale functie
symbolen aan de definitie binnen de gedeelde bibliotheek, indien aanwezig. Deze
optie kan ook worden gebruikt met de --export-dynamisch optie, wanneer?
het creëren van een positie-onafhankelijk uitvoerbaar bestand om verwijzingen naar te binden
globale functiesymbolen naar de definitie in het uitvoerbare bestand.
Deze optie is alleen zinvol op ELF-platforms die ondersteuning bieden voor:
gedeelde bibliotheken en positie-onafhankelijke uitvoerbare bestanden.
--dynamische-lijst=dynamisch-lijst-bestand
Geef de naam van een dynamisch lijstbestand op voor de linker. Dit is
meestal gebruikt bij het maken van gedeelde bibliotheken om een lijst met
globale symbolen waarvan de verwijzingen niet gebonden mogen zijn aan de
definitie binnen de gedeelde bibliotheek, of dynamisch creëren
gekoppelde uitvoerbare bestanden om een lijst met symbolen op te geven die
toegevoegd aan de symbolentabel in het uitvoerbare bestand. Deze optie is alleen
zinvol op ELF-platforms die gedeelde bibliotheken ondersteunen.
Het formaat van de dynamische lijst is hetzelfde als het versieknooppunt
zonder bereik en knooppuntnaam. Zien VERSIE voor meer informatie.
--dynamische-lijst-gegevens
Voeg alle globale gegevenssymbolen toe aan de dynamische lijst.
--dynamische-lijst-cpp-nieuw
Geef de ingebouwde dynamische lijst voor C++-operator nieuw en verwijder.
Het is vooral handig voor het bouwen van gedeelde libstdc++.
--dynamische-lijst-cpp-typeinfo
Geef de ingebouwde dynamische lijst op voor het C++ runtime-type
identificatie.
--check-secties
--no-check-secties
Vraagt de linker niet om sectie-adressen te controleren nadat ze zijn geweest
toegewezen om te zien of er overlappingen zijn. Normaal gesproken is de linker
zal deze controle uitvoeren, en als er overlappingen zijn, zal het:
geschikte foutmeldingen produceren. De linker weet er wel van, en
houdt wel rekening met secties in overlays. De standaard
gedrag kan worden hersteld met behulp van de opdrachtregelschakelaar
--check-secties. Overlap van secties wordt meestal niet gecontroleerd
verplaatsbare koppelingen. U kunt in dat geval het controleren forceren door gebruik te maken van
the --check-secties optie.
--copy-dt-nodige-invoeren
--no-copy-dt-nodige-invoeren
Deze optie is van invloed op de behandeling van dynamische bibliotheken waarnaar wordt verwezen
door DT_NEEDED-tags binnen ELF dynamische bibliotheken vermeld op de
opdrachtregel. Normaal gesproken voegt de linker geen DT_NEEDED-tag toe aan de
output binair voor elke bibliotheek genoemd in een DT_NEEDED-tag in een
invoer dynamische bibliotheek. Met --copy-dt-nodige-invoeren gespecificeerd op
de opdrachtregel, maar alle dynamische bibliotheken die erop volgen, zullen:
hebben hun DT_NEEDED vermeldingen toegevoegd. Het standaardgedrag kan zijn:
hersteld met --no-copy-dt-nodige-invoeren.
Deze optie heeft ook effect op de resolutie van symbolen in
dynamische bibliotheken. Met --copy-dt-nodige-invoeren dynamische bibliotheken
die op de opdrachtregel worden vermeld, wordt recursief doorzocht,
hun DT_NEEDED-tags volgen naar andere bibliotheken, om
symbolen oplossen die vereist zijn door het uitvoer binaire bestand. Met de standaard
instelling echter het zoeken van dynamische bibliotheken die erop volgen
stopt met de dynamische bibliotheek zelf. Geen DT_NEEDED-links
worden doorlopen om symbolen op te lossen.
--cref
Voer een kruisverwijzingstabel uit. Als een linker-kaartbestand wordt
gegenereerd, wordt de kruisverwijzingstabel afgedrukt naar het kaartbestand.
Anders wordt het afgedrukt op de standaarduitvoer.
Het formaat van de tabel is opzettelijk eenvoudig, zodat het kan zijn:
indien nodig eenvoudig door een script verwerkt. De symbolen zijn gedrukt
uit, gesorteerd op naam. Voor elk symbool is een lijst met bestandsnamen:
gegeven. Als het symbool is gedefinieerd, is het eerste bestand dat wordt weergegeven de
plaats van de definitie. Als het symbool is gedefinieerd als een gemeenschappelijk
waarde, dan verschijnen alle bestanden waarin dit gebeurt, als volgende. Eindelijk een
bestanden die verwijzen naar het symbool worden weergegeven.
--geen-definieer-algemeen
Deze optie verhindert de toewijzing van adressen aan algemene symbolen.
De scriptopdracht "INHIBIT_COMMON_ALLOCATION" heeft hetzelfde effect.
De --geen-definieer-algemeen optie maakt het ontkoppelen van de beslissing om
adressen toewijzen aan gemeenschappelijke symbolen uit de keuze van de output
bestandstype; anders dwingt een niet-verplaatsbaar uitvoertype toewijzen
adressen naar veelgebruikte symbolen. Gebruik makend van --geen-definieer-algemeen toestaat
Algemene symbolen waarnaar wordt verwezen vanuit een gedeelde bibliotheek
toegewezen adressen alleen in het hoofdprogramma. Dit elimineert de
ongebruikte dubbele ruimte in de gedeelde bibliotheek, en voorkomt ook eventuele
mogelijke verwarring over het oplossen van het verkeerde duplicaat wanneer er
zijn veel dynamische modules met gespecialiseerde zoekpaden voor runtime
symbool resolutie.
--defsym=symbool=uitdrukking
Maak een globaal symbool in het uitvoerbestand, met daarin de absolute
adres gegeven door uitdrukking. Je mag deze optie zo vaak gebruiken
indien nodig om meerdere symbolen in de opdrachtregel te definiëren. EEN
beperkte vorm van rekenen wordt ondersteund voor de uitdrukking In dit
context: je mag een hexadecimale constante geven of de naam van an
bestaand symbool, of gebruik "+" en "-" om hexadecimaal toe te voegen of af te trekken
constanten of symbolen. Als u meer uitgebreide uitdrukkingen nodig heeft,
overweeg om de linker-opdrachttaal uit een script te gebruiken. Opmerking:
er mag geen witruimte tussen zijn symbool, het gelijkteken
("="), en uitdrukking.
--ontwarren[=stijl]
--geen-demangle
Deze opties bepalen of symboolnamen ten onrechte moeten worden ontmanteld
berichten en andere output. Wanneer de linker wordt verteld om te ontmantelen, is het
probeert symboolnamen op een leesbare manier te presenteren: het stript
leidende onderstrepingstekens als ze worden gebruikt door de bestandsindeling van het object, en
zet C++ verminkte symboolnamen om in voor de gebruiker leesbare namen.
Verschillende compilers hebben verschillende mangling-stijlen. de optionele
demangling-stijlargument kan worden gebruikt om een geschikte
demangling-stijl voor uw compiler. De linker zal ontmantelen door
standaard tenzij de omgevingsvariabele COLLECT_NO_DEMANGLE is ingesteld.
Deze opties kunnen worden gebruikt om de standaard te overschrijven.
-Ifilet
--dynamische-linker=filet
Stel de naam van de dynamische linker in. Dit is alleen zinvol als
het genereren van dynamisch gekoppelde ELF-uitvoerbare bestanden. De standaard dynamiek
linker is normaal gesproken correct; gebruik dit niet tenzij je weet wat je
zijn aan het doen.
--geen-dynamische-linker
Bij het produceren van een uitvoerbaar bestand, laat het verzoek om een dynamische weg
linker die tijdens het laden moet worden gebruikt. Dit is alleen zinvol voor ELF
uitvoerbare bestanden die dynamische verplaatsingen bevatten, en die meestal vereist:
toegangspuntcode die deze verhuizingen kan verwerken.
--fatale-waarschuwingen
--geen-fatale-waarschuwingen
Behandel alle waarschuwingen als fouten. Het standaardgedrag kan zijn:
hersteld met de optie --geen-fatale-waarschuwingen.
--force-exe-achtervoegsel
Zorg ervoor dat een uitvoerbestand een .exe-achtervoegsel heeft.
Als een succesvol gebouwd volledig gekoppeld uitvoerbestand geen
".exe" of ".dll" achtervoegsel, deze optie dwingt de linker om de . te kopiëren
uitvoerbestand naar een bestand met dezelfde naam met het achtervoegsel ".exe". Deze
optie is handig bij het gebruik van ongewijzigde Unix-makefiles op a
Microsoft Windows-host, aangezien sommige versies van Windows geen
image tenzij het eindigt op een ".exe"-achtervoegsel.
--gc-secties
--geen-gc-secties
Schakel het verzamelen van ongebruikte invoersecties in. Het wordt genegeerd
op doelen die deze optie niet ondersteunen. Het standaardgedrag
(van het niet uitvoeren van deze garbagecollection) kan worden hersteld door:
specificeren --geen-gc-secties op de opdrachtregel. Merk op dat afval
verzameling voor COFF- en PE-formaatdoelen wordt ondersteund, maar de
implementatie wordt momenteel als experimenteel beschouwd.
--gc-secties bepaalt welke invoersecties worden gebruikt door te onderzoeken
symbolen en verhuizingen. Het gedeelte met het invoersymbool
en alle secties die symbolen bevatten die niet zijn gedefinieerd op de opdrachtregel
worden bewaard, evenals secties met symbolen waarnaar wordt verwezen door
dynamische objecten. Merk op dat bij het bouwen van gedeelde bibliotheken de
linker moet aannemen dat er naar elk zichtbaar symbool wordt verwezen. Een keer
deze eerste reeks secties is bepaald, de linker
recursief markeert als gebruikt elke sectie waarnaar wordt verwezen door hun
verhuizingen. Zien --invoer en --onbepaald.
Deze optie kan worden ingesteld bij het doen van een gedeeltelijke koppeling (ingeschakeld met
optie -r). In dit geval moet de wortel van de symbolen die worden bewaard zijn
expliciet gespecificeerd ofwel door een --invoer or --onbepaald optie of
door een "ENTRY"-opdracht in het linkerscript.
--print-gc-secties
--geen-print-gc-secties
Maak een lijst van alle secties die zijn verwijderd door garbagecollection. De lijst is:
gedrukt op stderr. Deze optie is alleen effectief als afval
collectie is ingeschakeld via de --gc-secties) optie. De
standaardgedrag (van het niet vermelden van de secties die zijn verwijderd)
kan worden hersteld door op te geven --geen-print-gc-secties op commando
lijn.
--afdruk-uitvoer-formaat
Druk de naam af van het standaard uitvoerformaat (misschien beïnvloed door
andere opdrachtregelopties). Dit is de tekenreeks die zou verschijnen
in een "OUTPUT_FORMAT" linker-scriptopdracht.
--print-geheugen-gebruik
Gebruikte grootte, totale grootte en gebruikte grootte van aangemaakte geheugenregio's afdrukken
met de GEHEUGEN opdracht. Dit is handig op ingebedde doelen om:
hebben een snel overzicht van de hoeveelheid vrij geheugen. Het formaat van de
output heeft één kop en één regel per regio. Het is zowel menselijk
leesbaar en gemakkelijk te parseren door tools. Hier is een voorbeeld van een
output:
Geheugenregio Gebruikt Grootte Regio Grootte %leeftijd Gebruikt
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
--help
Een samenvatting van de opdrachtregelopties afdrukken op de standaarduitvoer
en verlaat.
--doel-hulp
Print een overzicht van alle doelspecifieke opties op de standaard
uitgang en uitgang.
-Kaart=mapbestand
Een linkmap naar het bestand afdrukken mapbestand. Zie de beschrijving van de
-M optie, hierboven.
--geen-houd-geheugen
ld optimaliseert normaal gesproken voor snelheid boven geheugengebruik door de
symbooltabellen van invoerbestanden in het geheugen. Deze optie vertelt ld naar
in plaats daarvan optimaliseren voor geheugengebruik, door de symbooltabellen opnieuw te lezen
als nodig. Dit kan nodig zijn als: ld onvoldoende geheugenruimte
terwijl u een groot uitvoerbaar bestand koppelt.
--geen-undefined
-z defs
Rapporteer onopgeloste symboolreferenties uit reguliere objectbestanden.
Dit wordt gedaan, zelfs als de linker een niet-symbolische gedeelde . maakt
bibliotheek. De schakelaar --[no-]allow-shlib-ungedefinieerd regelt de
gedrag voor het rapporteren van onopgeloste referenties gevonden in shared
bibliotheken worden gekoppeld.
--sta-meervoudige-definitie toe
-z Muldefs
Normaal gesproken, wanneer een symbool meerdere keren wordt gedefinieerd, zal de linker
een fatale fout melden. Deze opties staan meerdere definities toe en
de eerste definitie zal worden gebruikt.
--allow-shlib-ungedefinieerd
--no-allow-shlib-ungedefinieerd
Staat ongedefinieerde symbolen in gedeelde bibliotheken wel of niet toe. Deze
schakelaar is vergelijkbaar met --geen-undefined behalve dat het bepaalt de
gedrag wanneer de ongedefinieerde symbolen eerder in een gedeelde bibliotheek staan
dan een gewoon objectbestand. Het heeft geen invloed op hoe ongedefinieerd
symbolen in reguliere objectbestanden worden behandeld.
Het standaardgedrag is om fouten te rapporteren voor ongedefinieerde symbolen
waarnaar wordt verwezen in gedeelde bibliotheken als de linker wordt gebruikt om
maak een uitvoerbaar bestand, maar om ze toe te staan als de linker wordt gebruikt
om een gedeelde bibliotheek te maken.
De redenen voor het toestaan van ongedefinieerde symboolverwijzingen in shared
bibliotheken die bij het koppelen zijn opgegeven, zijn dat:
· Een gedeelde bibliotheek die op het moment van de koppeling is opgegeven, is mogelijk niet hetzelfde als
degene die beschikbaar is tijdens het laden, dus het symbool kan
daadwerkelijk op te lossen zijn tijdens het laden.
· Er zijn enkele besturingssystemen, bijv. BeOS en HPPA, waar
ongedefinieerde symbolen in gedeelde bibliotheken zijn normaal.
De BeOS-kernel patcht bijvoorbeeld gedeelde bibliotheken bij het laden
tijd om de functie te selecteren die het meest geschikt is voor de
huidige architectuur. Dit wordt bijvoorbeeld gebruikt om
dynamisch een geschikte memset-functie selecteren.
--geen-undefined-versie
Normaal gesproken, wanneer een symbool een ongedefinieerde versie heeft, zal de linker
negeer het. Deze optie verbiedt symbolen met een ongedefinieerde versie en
een fatale fout zal in plaats daarvan worden uitgegeven.
--standaard-symver
Maak en gebruik een standaard symboolversie (de soname) voor
niet-versierde geëxporteerde symbolen.
--standaard-geïmporteerde-symver
Maak en gebruik een standaard symboolversie (de soname) voor
geïmporteerde symbolen zonder versiebeheer.
--geen-waarschuwing-mismatch
Normaal ld geeft een foutmelding als je probeert om input aan elkaar te koppelen
bestanden die om de een of andere reden niet overeenkomen, misschien omdat ze
zijn samengesteld voor verschillende processors of voor verschillende
endiannessen. Deze optie vertelt ld dat het stilzwijgend moet toestaan
dergelijke mogelijke fouten. Deze optie mag alleen met zorg worden gebruikt,
in gevallen waarin u een speciale actie heeft ondernomen die ervoor zorgt dat
de linker fouten zijn ongepast.
--no-warn-search-mismatch
Normaal ld zal een waarschuwing geven als het een incompatibele bibliotheek vindt
tijdens een bibliotheekzoektocht. Deze optie dempt de waarschuwing.
--geen-geheel-archief
Schakel het effect van de . uit --geheel-archief optie voor vervolg
archiefbestanden.
--noinhibit-exec
Bewaar het uitvoerbare uitvoerbestand wanneer het nog bruikbaar is.
Normaal gesproken zal de linker geen uitvoerbestand produceren als het
fouten tegenkomt tijdens het koppelingsproces; het wordt afgesloten zonder te schrijven
een uitvoerbestand wanneer het een fout geeft.
-nostlib
Alleen zoeken in bibliotheekmappen die expliciet zijn gespecificeerd in de opdracht
lijn. Bibliotheekmappen gespecificeerd in linkerscripts (inclusief
linker-scripts gespecificeerd op de opdrachtregel) worden genegeerd.
--oformat=output-formaat
ld kan worden geconfigureerd om meer dan één soort objectbestand te ondersteunen.
Als uw ld op deze manier is geconfigureerd, kunt u de --oformat optie
om het binaire formaat voor het uitvoerobjectbestand op te geven. Zelfs wanneer
ld is geconfigureerd om alternatieve objectformaten te ondersteunen, u niet
moet dit meestal specificeren, zoals: ld moet worden geconfigureerd om te produceren:
als standaard uitvoerformaat het meest gebruikelijke formaat op elke machine.
output-formaat is een tekenreeks, de naam van een bepaald formaat
ondersteund door de BFD-bibliotheken. (U kunt de beschikbare binaire lijst weergeven)
formaten met object -i.) Het scriptcommando "OUTPUT_FORMAT" kan
specificeer ook het uitvoerformaat, maar deze optie heft dit op.
-taart
--pic-uitvoerbaar
Maak een positie-onafhankelijk uitvoerbaar bestand. Dit is momenteel alleen
ondersteund op ELF-platforms. Positie-onafhankelijke uitvoerbare bestanden zijn:
vergelijkbaar met gedeelde bibliotheken in die zin dat ze worden verplaatst door de
dynamische linker naar het virtuele adres dat het besturingssysteem ervoor kiest
(die kan variëren tussen aanroepen). Zoals normaal dynamisch
gekoppelde uitvoerbare bestanden kunnen worden uitgevoerd en symbolen gedefinieerd in de
uitvoerbaar bestand kan niet worden overschreven door gedeelde bibliotheken.
-qmagie
Deze optie wordt genegeerd voor Linux-compatibiliteit.
-Qy Deze optie wordt genegeerd voor SVR4-compatibiliteit.
--ontspannen
--niet-relax
Een optie met machineafhankelijke effecten. Deze optie is alleen
ondersteund op enkele doelen.
Op sommige platforms is de --ontspannen optie voert doelspecifiek uit,
globale optimalisaties die mogelijk worden wanneer de linker wordt opgelost
adressering in het programma, zoals ontspannende adresmodi,
nieuwe instructies samenstellen, kortere versie van huidige selecteren
instructies en het combineren van constante waarden.
Op sommige platforms kunnen deze linktijd globale optimalisaties opleveren
symbolische foutopsporing van het resulterende uitvoerbare onmogelijk. Dit is
waarvan bekend is dat dit het geval is voor de Matsushita MN10200- en MN10300-familie
van processors.
Op platforms waar dit niet wordt ondersteund, --ontspannen wordt geaccepteerd, maar
buiten beschouwing gelaten.
Op platforms waar --ontspannen wordt geaccepteerd de optie --niet-relax kan zijn
gebruikt om de functie uit te schakelen.
--retain-symbolen-bestand=bestandsnaam
Behouden Slechts de symbolen vermeld in het bestand bestandsnaam, alles weggooien
anderen. bestandsnaam is gewoon een plat bestand, met één symboolnaam per
lijn. Deze optie is vooral handig in omgevingen (zoals:
VxWorks) waar een grote globale symbooltabel wordt verzameld
geleidelijk, om runtime-geheugen te sparen.
--retain-symbols-bestand doet niet verwijder ongedefinieerde symbolen, of
symbolen die nodig zijn voor verhuizingen.
U mag alleen specificeren: --retain-symbols-bestand eenmaal in de opdracht
lijn. Het overschrijft -s en -S.
-rpad=dir
Voeg een map toe aan het zoekpad van de runtimebibliotheek. Dit wordt gebruikt
bij het koppelen van een ELF-uitvoerbaar bestand met gedeelde objecten. Allemaal -rpad
argumenten worden aaneengeschakeld en doorgegeven aan de runtime-linker, die:
gebruikt ze om tijdens runtime gedeelde objecten te lokaliseren. De -rpad optie
wordt ook gebruikt bij het lokaliseren van gedeelde objecten die nodig zijn door:
gedeelde objecten die expliciet in de link zijn opgenomen; zie de beschrijving
van de -rpath-link optie. Indien -rpad wordt niet gebruikt bij het koppelen van een
ELF uitvoerbaar, de inhoud van de omgevingsvariabele
"LD_RUN_PATH" wordt gebruikt als het is gedefinieerd.
De -rpad optie kan ook worden gebruikt op SunOS. Standaard, op SunOS,
de linker zal een runtime-zoekpad vormen uit alle -L
opties die het krijgt. Als een -rpad optie wordt gebruikt, de runtime
zoekpad wordt uitsluitend gevormd met behulp van de -rpad opties
negeren van de -L opties. Dit kan handig zijn bij het gebruik van gcc, wat:
voegt veel toe -L opties die mogelijk aanwezig zijn op NFS-gemounte bestandssystemen.
Voor compatibiliteit met andere ELF-linkers, als de -R Optie is
gevolgd door een mapnaam, in plaats van een bestandsnaam, het is
behandeld als de -rpad optie.
-rpath-link=dir
Bij gebruik van ELF of SunOS kan voor de ene gedeelde bibliotheek een andere nodig zijn.
Dit gebeurt wanneer een "ld -shared"-link een gedeelde bibliotheek bevat als
een van de invoerbestanden.
Wanneer de linker een dergelijke afhankelijkheid tegenkomt bij het doen van een niet-
gedeelde, niet-verplaatsbare link, het zal automatisch proberen te lokaliseren
de vereiste gedeelde bibliotheek en neem deze op in de link, als dat zo is
niet expliciet opgenomen. In een dergelijk geval is de -rpath-link optie
specificeert de eerste set mappen die moet worden doorzocht. De -rpath-link
optie kan een reeks directorynamen specificeren door ofwel
een lijst met namen opgeven, gescheiden door dubbele punten, of door te verschijnen
meerdere keren.
Deze optie moet met de nodige voorzichtigheid worden gebruikt omdat het de zoekopdracht overschrijft
pad dat mogelijk moeilijk is gecompileerd in een gedeelde bibliotheek. In
in zo'n geval is het mogelijk om onbedoeld een andere
zoekpad dan de runtime-linker zou doen.
De linker gebruikt de volgende zoekpaden om de vereiste te lokaliseren:
gedeelde bibliotheken:
1. Alle mappen gespecificeerd door -rpath-link opties.
2. Alle mappen gespecificeerd door -rpad opties. Het verschil
tussen -rpad en -rpath-link is dat mappen gespecificeerd door
-rpad opties zijn opgenomen in het uitvoerbare bestand en worden gebruikt op
looptijd, terwijl de -rpath-link optie is alleen effectief bij
tijd koppelen. Zoeken -rpad op deze manier wordt alleen ondersteund door
native linkers en cross linkers die zijn geconfigureerd
met de --met-sysroot optie.
3. Op een ELF-systeem, voor native linkers, als de -rpad en
-rpath-link opties niet zijn gebruikt, zoek dan in de inhoud van de
omgevingsvariabele "LD_RUN_PATH".
4. Op SunOS, als de -rpad optie is niet gebruikt, zoek er een
mappen gespecificeerd met -L opties.
5. Zoek voor een native linker in de inhoud van de omgeving
variabele "LD_LIBRARY_PATH".
6. Voor een native ELF-linker, de mappen in "DT_RUNPATH" of
Er wordt naar "DT_RPATH" van een gedeelde bibliotheek gezocht naar gedeeld
bibliotheken die het nodig heeft. De "DT_RPATH"-items worden genegeerd als
Er zijn "DT_RUNPATH"-items.
7. De standaardmappen, normaal gesproken / lib en / Usr / lib.
8. Voor een native linker op een ELF-systeem, als het bestand
/etc/ld.so.conf bestaat, de lijst met daarin gevonden mappen
bestand.
Als de vereiste gedeelde bibliotheek niet wordt gevonden, wordt de linker uitgegeven
een waarschuwing en ga verder met de link.
-gedeeld
-Bdeelbaar
Maak een gedeelde bibliotheek. Dit wordt momenteel alleen ondersteund op ELF,
XCOFF- en SunOS-platforms. Op SunOS zal de linker automatisch
maak een gedeelde bibliotheek als de -e optie wordt niet gebruikt en er zijn
ongedefinieerde symbolen in de link.
--sort-gemeenschappelijk
--sort-common=oplopend
--sort-common=aflopend
Deze optie vertelt ld om de gemeenschappelijke symbolen te sorteren op uitlijning in
oplopende of aflopende volgorde wanneer het ze in de plaatst
geschikte uitvoersecties. De beschouwde symbooluitlijningen zijn:
zestien-byte of groter, acht-byte, vier-byte, twee-byte en één-
byte. Dit is om hiaten tussen symbolen als gevolg van uitlijning te voorkomen
beperkingen. Als er geen sorteervolgorde is opgegeven, dan aflopend
volgorde wordt aangenomen.
--sort-section=naam
Met deze optie wordt 'SORT_BY_NAME' toegepast op alle secties met jokertekens
patronen in het linkerscript.
--sort-sectie=uitlijning
Met deze optie wordt "SORT_BY_ALIGNMENT" toegepast op alle secties met jokertekens
patronen in het linkerscript.
--gesplitst-per-bestand[=lengte van de duwkabel]
Soortgelijke --gesplitst-door-verplaatsing maar maakt een nieuwe uitvoersectie voor
elk invoerbestand wanneer lengte van de duwkabel is bereikt. lengte van de duwkabel standaard ingesteld op een grootte van 1
indien niet gegeven.
--gesplitst-door-reloc[=tellen]
Probeert extra secties in het uitvoerbestand te maken zodat geen
enkele uitvoersectie in het bestand bevat meer dan tellen
verhuizingen. Dit is handig bij het genereren van enorme verplaatsbare bestanden
voor het downloaden naar bepaalde realtime kernels met het COFF-object
bestandsformaat; aangezien COFF niet meer dan 65535 . kan vertegenwoordigen
verhuizingen in één sectie. Merk op dat dit niet zal werken
met objectbestandsindelingen die geen willekeurige secties ondersteunen.
De linker zal geen afzonderlijke invoersecties splitsen voor:
herverdeling, dus als een enkele invoersectie meer dan bevat
tellen verplaatsingen één uitvoersectie zal zoveel bevatten
verhuizingen. tellen standaard ingesteld op 32768.
--statistieken
Bereken en toon statistieken over de werking van de linker,
zoals uitvoeringstijd en geheugengebruik.
--sysroot=directory
Gebruik directory als de locatie van de sysroot, met voorrang op de
standaard configuratietijd. Deze optie wordt alleen ondersteund door linkers
die zijn geconfigureerd met --met-sysroot.
--traditioneel-formaat
Voor sommige doelen is de output van ld is in sommige opzichten anders dan
de output van een bestaande linker. Deze schakelaar vraagt: ld gebruiken
in plaats daarvan het traditionele formaat.
Op SunOS bijvoorbeeld, ld combineert dubbele vermeldingen in het symbool
string tafel. Dit kan de grootte van een uitvoerbestand verkleinen met full
het debuggen van informatie met meer dan 30 procent. Helaas, de SunOS
"dbx" programma kan het resulterende programma niet lezen ("gdb" heeft geen
probleem). De --traditioneel-formaat schakelaar vertelt ld niet combineren
dubbele vermeldingen.
--sectie-start=sectie naam=org
Zoek een sectie in het uitvoerbestand op het opgegeven absolute adres
by org. U kunt deze optie zo vaak gebruiken als nodig is om:
zoek meerdere secties in de opdrachtregel. org moet een single zijn
hexadecimaal geheel getal; voor compatibiliteit met andere linkers, kunt u:
laat de leidende weg 0x meestal geassocieerd met hexadecimale waarden.
Opmerking: er mag geen witruimte tussen zijn sectie naam
is gelijk aan teken ("="), en org.
-Tbs=org
-Tgegevens=org
-Ttekst=org
Hetzelfde als --sectie-start, met ".bss", ".data" of ".text" als de
sectie naam.
-Ttekst-segment=org
Bij het maken van een ELF-uitvoerbaar bestand, wordt het adres van de
eerste byte van het tekstsegment.
-Trodata-segment=org
Bij het maken van een ELF uitvoerbaar of gedeeld object voor een doel waarbij:
de alleen-lezen gegevens zijn in een eigen segment gescheiden van de
uitvoerbare tekst, zal het het adres van de eerste byte van de
alleen-lezen gegevenssegment.
-Tldata-segment=org
Bij het maken van een ELF uitvoerbaar of gedeeld object voor x86-64 medium
geheugenmodel, zal het het adres van de eerste byte van de
ldata-segment.
--onopgeloste symbolen=methode
Bepaal hoe om te gaan met onopgeloste symbolen. Er zijn er vier
mogelijke waarden voor methode:
negeer alles
Rapporteer geen onopgeloste symbolen.
alles melden
Rapporteer alle onopgeloste symbolen. Dit is de standaardinstelling.
negeer-in-object-bestanden
Rapporteer onopgeloste symbolen die zijn opgenomen in shared
bibliotheken, maar negeer ze als ze uit een gewoon object komen
bestanden.
negeren-in-gedeelde-libs
Rapporteer onopgeloste symbolen die afkomstig zijn uit gewone objectbestanden,
maar negeer ze als ze uit gedeelde bibliotheken komen. Dit kan
handig zijn bij het maken van een dynamisch binair bestand en het is bekend dat:
alle gedeelde bibliotheken waarnaar het zou moeten verwijzen, zijn:
opgenomen op de opdrachtregel van de linker.
Het gedrag voor gedeelde bibliotheken op zichzelf kan ook zijn:
gecontroleerd door de --[no-]allow-shlib-ungedefinieerd optie.
Normaal gesproken genereert de linker een foutmelding voor elke
gerapporteerd onopgelost symbool maar de optie --waarschuwing-onopgeloste-symbolen
kan dit veranderen in een waarschuwing.
--dll-uitgebreid
--uitgebreid[=NUMMER]
Geef het versienummer weer voor ld en vermeld de linker-emulaties
ondersteund. Geef weer welke invoerbestanden wel en niet kunnen worden geopend.
Geef het linkerscript weer dat door de linker wordt gebruikt. Als de optionele
NUMMER argument > 1, de status van het plug-insymbool wordt ook weergegeven.
--versie-script=versie-scriptbestand
Geef de naam van een versiescript op voor de linker. Dit is
meestal gebruikt bij het maken van gedeelde bibliotheken om aanvullende
informatie over de versiehiërarchie voor de bibliotheek die
gemaakt. Deze optie wordt alleen volledig ondersteund op ELF-platforms
die gedeelde bibliotheken ondersteunen; zien VERSIE. Het is gedeeltelijk
ondersteund op PE-platforms, die versiescripts kunnen gebruiken om te filteren
zichtbaarheid van symbolen in automatische exportmodus: alle symbolen gemarkeerd lokaal in
het versiescript wordt niet geëxporteerd.
--waarschuwen-vaak
Waarschuw wanneer een algemeen symbool wordt gecombineerd met een ander algemeen symbool of
met een symbooldefinitie. Unix-linkers laten dit enigszins slordig toe
praktijk, maar linkers op sommige andere besturingssystemen niet. Deze
optie stelt u in staat potentiële problemen te vinden bij het combineren van global
symbolen. Helaas gebruiken sommige C-bibliotheken deze praktijk, dus u
kan enkele waarschuwingen krijgen over symbolen in de bibliotheken en in
uw programma's.
Er zijn drie soorten globale symbolen, hier geïllustreerd door C
voorbeelden:
int i = 1;
Een definitie, die in het gedeelte met geïnitialiseerde gegevens van de
uitvoer bestand.
extern int i;
Een ongedefinieerde referentie, die geen ruimte toewijst. Daar
moet een definitie of een algemeen symbool voor de variabele zijn
ergens.
int i;
Een algemeen symbool. Als er slechts (een of meer) gemeenschappelijke
symbolen voor een variabele, gaat het in het niet-geïnitialiseerde gegevensgebied
van het uitvoerbestand. De linker voegt meerdere gemeenschappelijke symbolen samen
voor dezelfde variabele in een enkel symbool. Als ze van zijn
verschillende maten, het kiest de grootste maat. De linker draait a
gemeenschappelijk symbool in een verklaring, als er een definitie van is
dezelfde variabele.
De --waarschuwen-vaak optie kan vijf soorten waarschuwingen produceren. Elk
waarschuwing bestaat uit een paar regels: de eerste beschrijft het symbool
net tegengekomen, en de tweede beschrijft het vorige symbool
met dezelfde naam aangetroffen. Een of beide van de twee symbolen
zal een algemeen symbool zijn.
1. Een algemeen symbool in een referentie veranderen, omdat er is
al een definitie voor het symbool.
( ): waarschuwing: gemeenschappelijk van ` '
per definitie overschreven
( ): waarschuwing: hier gedefinieerd
2. Een algemeen symbool in een referentie veranderen, omdat een latere
definitie voor het symbool wordt aangetroffen. Dit is hetzelfde als
het vorige geval, behalve dat de symbolen worden aangetroffen in a
andere volgorde.
( ): waarschuwing: definitie van ` '
overheersende gemeenschappelijke
( ): waarschuwing: gebruikelijk is hier
3. Een gemeenschappelijk symbool samenvoegen met een eerder gemeenschappelijk symbool van dezelfde grootte
symbool.
( ): waarschuwing: meerdere gemeenschappelijke
van ` '
( ): waarschuwing: vorige common is hier
4. Samenvoegen van een gemeenschappelijk symbool met een eerder groter gemeenschappelijk symbool.
( ): waarschuwing: gemeenschappelijk van ` '
overschreven door grotere common
( ): waarschuwing: grotere common is hier
5. Samenvoegen van een gemeenschappelijk symbool met een eerder kleiner gemeenschappelijk symbool.
Dit is hetzelfde als het vorige geval, behalve dat de symbolen
komen in een andere volgorde voor.
( ): waarschuwing: gemeenschappelijk van ` '
overschrijven kleinere gemeenschappelijke
( ): waarschuwing: kleinere gemeenschappelijke is hier
--warn-bouwers
Waarschuw als er globale constructors worden gebruikt. Dit is alleen nuttig voor:
een paar bestandsindelingen voor objecten. Voor formaten zoals COFF of ELF, de
linker kan het gebruik van globale constructors niet detecteren.
--waarschuwen-meerdere-gp
Waarschuwen als meerdere globale aanwijzerwaarden vereist zijn in de uitvoer
het dossier. Dit is alleen zinvol voor bepaalde processors, zoals de
Alfa. In het bijzonder plaatsen sommige processors grote constanten in
een speciaal gedeelte. Een speciaal register (de globale wijzer) wijst
in het midden van deze sectie, zodat constanten kunnen worden geladen
efficiënt via een base-register relatieve adresseringsmodus. Sinds
de offset in de relatieve modus van het basisregister is vast en relatief
klein (bijv. 16 bits), dit beperkt de maximale grootte van de constante
zwembad. In grote programma's is het dus vaak nodig om
meerdere globale aanwijzerwaarden om alles te kunnen adresseren
mogelijke constanten. Deze optie zorgt ervoor dat er een waarschuwing wordt gegeven
wanneer dit geval zich voordoet.
--waarschuw-eenmaal
Waarschuw slechts één keer voor elk ongedefinieerd symbool, in plaats van één keer per
module die ernaar verwijst.
--waarschuwing-sectie-uitlijnen
Waarschuwen als het adres van een uitvoersectie is gewijzigd vanwege:
uitlijning. Meestal wordt de uitlijning ingesteld door een invoer
sectie. Het adres wordt alleen gewijzigd als dit niet expliciet is
gespecificeerd; dat wil zeggen, als de opdracht "SECTIONS" geen a . specificeert
startadres voor de sectie.
--warn-shared-textrel
Waarschuwen als de linker een DT_TEXTREL toevoegt aan een gedeeld object.
--waarschuwing-alternatief-em
Waarschuwen als een object een alternatieve ELF-machinecode heeft.
--waarschuwing-onopgeloste-symbolen
Als de linker een onopgelost symbool gaat rapporteren (zie de
optie --onopgeloste-symbolen) zal het normaal gesproken een fout genereren.
Deze optie zorgt ervoor dat er in plaats daarvan een waarschuwing wordt gegenereerd.
--error-onopgeloste-symbolen
Dit herstelt het standaardgedrag van de linker om fouten te genereren
wanneer het onopgeloste symbolen meldt.
--geheel-archief
Voor elk archief vermeld op de opdrachtregel na de
--geheel-archief optie, neem elk objectbestand in het archief op in
de link, in plaats van in het archief te zoeken naar het vereiste object
bestanden. Dit wordt normaal gesproken gebruikt om een archiefbestand om te zetten in een gedeelde
bibliotheek, waardoor elk object moet worden opgenomen in de resulterende
gedeelde bibliotheek. Deze optie kan meer dan eens worden gebruikt.
Twee opmerkingen bij het gebruik van deze optie van gcc: Ten eerste, gcc weet het niet
over deze optie, dus je moet gebruiken -Wl,-geheel-archief. Tweede,
vergeet niet te gebruiken -Wl,-geen-geheel-archief na je lijst met
archieven, omdat gcc zijn eigen lijst met archieven aan uw
link en misschien wilt u niet dat deze vlag daar ook van invloed op is.
--wikkel=symbool
Gebruik een wrapper-functie voor: symbool. Elke ongedefinieerde verwijzing naar
symbool wordt opgelost in "__wrap_symbool". Elke ongedefinieerde
verwijzing naar "__real_symbool" zal worden opgelost om symbool.
Dit kan worden gebruikt om een wrapper voor een systeemfunctie te verschaffen. De
wrapper-functie moet "__wrap_" worden genoemdsymbool". Als het wil
bel de systeemfunctie, het zou "__real_ moeten aanroepensymbool".
Hier is een triviaal voorbeeld:
leegte *
__wrap_malloc (maat_t c)
{
printf ("malloc aangeroepen met %zu\n", c);
retourneer __real_malloc (c);
}
Als u andere code aan dit bestand koppelt met --wikkelen malloc, dan alles
oproepen naar "malloc" zullen in plaats daarvan de functie "__wrap_malloc" aanroepen.
De aanroep naar "__real_malloc" in "__wrap_malloc" roept de real . op
"malloc"-functie.
Mogelijk wilt u ook een "__real_malloc"-functie opgeven, zodat:
links zonder de --wikkelen optie zal slagen. Als je dit doet, ben je
mag de definitie van "__real_malloc" niet in hetzelfde bestand plaatsen
als "__wrap_malloc"; als je dat doet, kan de assembler de oproep oplossen
voordat de linker de kans heeft om het in "malloc" te wikkelen.
--eh-frame-hdr
Aanmaak van ".eh_frame_hdr" sectie en ELF . aanvragen
"PT_GNU_EH_FRAME" segmentkop.
--geen-ld-gegenereerde-ontwikkel-info
Aanmaak van ".eh_frame" afwikkelinformatie aanvragen voor gegenereerde linker
codesecties zoals PLT. Deze optie is standaard ingeschakeld als linker
gegenereerde ontspanningsinformatie wordt ondersteund.
--enable-nieuwe-dtags
--disable-nieuwe-dtags
Deze linker kan de nieuwe dynamische tags in ELF maken. Maar hoe ouder
ELF-systemen begrijpen ze mogelijk niet. Als u opgeeft:
--enable-nieuwe-dtags, de nieuwe dynamische tags worden zo nodig gemaakt
en oudere dynamische tags worden weggelaten. Als u opgeeft:
--disable-nieuwe-dtags, worden er geen nieuwe dynamische tags gemaakt. Door
standaard worden de nieuwe dynamische tags niet gemaakt. Merk op dat die
opties zijn alleen beschikbaar voor ELF-systemen.
--hash-grootte=aantal
Stel de standaardgrootte van de hashtabellen van de linker in op een priemgetal
dicht aantal. Het verhogen van deze waarde kan de lengte van verkorten
tijd die de linker nodig heeft om zijn taken uit te voeren, ten koste van
het verhogen van de geheugenvereisten van de linker. Op dezelfde manier verminderen
deze waarde kan de geheugenvereisten verminderen ten koste van:
snelheid.
--hash-stijl=stijl
Stel het type hashtabel(len) van de linker in. stijl kan ofwel "sysv" zijn
voor klassieke ELF ".hash" sectie, "gnu" voor nieuwe stijl GNU
".gnu.hash" sectie of "beide" voor zowel de klassieke ELF ".hash" als
nieuwe stijl GNU ".gnu.hash" hashtabellen. De standaard is "sysv".
--compress-debug-sections=geen
--compress-debug-secties=zlib
--compress-debug-secties=zlib-gnu
--compress-debug-sections=zlib-gabi
Op ELF-platforms bepalen deze opties hoe DWARF-secties debuggen
worden gecomprimeerd met zlib. --compress-debug-sections=geen niet
comprimeer DWARF-foutopsporingssecties. --compress-debug-secties=zlib-gnu
comprimeert DWARF debug-secties en hernoemt debug-sectienamen naar
begin met .zdebug in plaats van .debuggen.
--compress-debug-secties=zlib en
--compress-debug-sections=zlib-gabi comprimeer DWARF-foutopsporingssecties
met SHF_COMPRESSED van de ELF ABI. Het standaardgedrag varieert
afhankelijk van het betrokken doel en de gebruikte configuratieopties
om de toolchain te bouwen. De standaard kan worden bepaald door te onderzoeken
de uitvoer van de linker's --help optie.
--verminder-geheugen-overhead
Deze optie vermindert de geheugenvereisten tijdens ld runtime, bij de
ten koste van de koppelingssnelheid. Dit werd geïntroduceerd om de oude te selecteren
O(n^2) algoritme voor het genereren van linkmapbestanden, in plaats van het nieuwe
O(n)-algoritme dat ongeveer 40% meer geheugen gebruikt voor symboolopslag.
Een ander effect van de omschakeling is om de standaard hash-tabelgrootte in te stellen
tot 1021, wat weer geheugen bespaart ten koste van het verlengen van de
de looptijd van de linker. Dit wordt echter niet gedaan als de --hash-grootte
schakelaar is gebruikt.
De --verminder-geheugen-overhead schakelaar kan ook worden gebruikt om
andere afwegingen in toekomstige versies van de linker.
--build-id
--build-id=stijl
Vraag om het maken van een ".note.gnu.build-id" ELF-notitiesectie of
een ".buildid" COFF-sectie. De inhoud van de notitie is uniek
bits die dit gekoppelde bestand identificeren. stijl kan "uuid" zijn om 128 . te gebruiken
willekeurige bits, "sha1" om een 160-bit SHA1-hash te gebruiken op de normatieve
delen van de uitvoerinhoud, "md5" om een 128-bits MD5-hash te gebruiken
de normatieve delen van de uitvoerinhoud, of "0xzeskant" gebruiken
een gekozen bitstring gespecificeerd als een even aantal hexadecimale
cijfers ("-" en ":" tekens tussen cijferparen worden genegeerd).
If stijl wordt weggelaten, wordt "sha1" gebruikt.
De stijlen "md5" en "sha1" produceren een id die altijd is
hetzelfde in een identiek uitvoerbestand, maar zal uniek zijn onder alle
niet-identieke uitvoerbestanden. Het is niet bedoeld om te worden vergeleken als een
checksum voor de inhoud van het bestand. Een gekoppeld bestand kan worden gewijzigd
later door andere tools, maar de build-ID-bitstring die de . identificeert
origineel gekoppeld bestand verandert niet.
"Geen" doorgeven voor stijl schakelt de instelling van elke "--build-id" uit
opties eerder op de opdrachtregel.
De i386 PE-linker ondersteunt de -gedeeld optie, waardoor de output
om een dynamisch gekoppelde bibliotheek (DLL) te zijn in plaats van een normale
uitvoerbaar. Je zou de output "*.dll" moeten noemen wanneer je dit gebruikt
optie. Bovendien ondersteunt de linker volledig de standaard "*.def"
bestanden, die kunnen worden opgegeven op de linker-opdrachtregel als een object
bestand (in feite moet het voorafgaan aan archieven waaruit het symbolen exporteert, naar
ervoor zorgen dat ze worden gekoppeld, net als een normaal objectbestand).
Naast de opties die alle doelen gemeen hebben, is de i386 PE linker
ondersteuning van extra opdrachtregelopties die specifiek zijn voor de i386
PE-doel. Opties die waarden aannemen, kunnen worden gescheiden van hun waarden
door een spatie of een isgelijkteken.
--add-stdcall-alias
Indien opgegeven, symbolen met een achtervoegsel stdcall (@nn) wordt geëxporteerd als-
is en ook met het achtervoegsel gestript. [Deze optie is specifiek voor
de i386 PE-gerichte poort van de linker]
--base-bestand filet
Gebruik filet als de naam van een bestand waarin de basisadressen moeten worden opgeslagen
van alle verhuizingen die nodig zijn voor het genereren van DLL's met dlltool.
[Dit is een i386 PE-specifieke optie]
--dll
Maak een DLL in plaats van een normaal uitvoerbaar bestand. U kunt ook gebruik maken van
-gedeeld of specificeer een "LIBRARY" in een bepaald ".def"-bestand. [Deze
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--enable-namen van lange secties
--uitschakelen-lange-sectie-namen
De PE-varianten van het COFF-objectformaat voegen een extensie toe die:
staat het gebruik van sectienamen toe die langer zijn dan acht tekens, de
normale limiet voor COFF. Standaard zijn deze namen alleen toegestaan in
objectbestanden, aangezien volledig gekoppelde uitvoerbare afbeeldingen niet de
COFF-tekenreekstabel vereist om de langere namen te ondersteunen. Als een GNU
extensie, is het mogelijk om het gebruik ervan in uitvoerbare afbeeldingen toe te staan
ook, of om (waarschijnlijk zinloos!) het object niet toe te staan
bestanden, door deze twee opties te gebruiken. Uitvoerbare afbeeldingen gegenereerd
met deze lange sectienamen zijn enigszins niet-standaard, dragende
zoals ze een tekenreekstabel doen, en kunnen verwarrende uitvoer genereren wanneer:
onderzocht met niet-GNU PE-bewuste tools, zoals bestandsviewers en
dumpers. GDB vertrouwt echter op het gebruik van lange PE-sectienamen
om Dwarf-2 debug-informatiesecties in een uitvoerbare afbeelding te vinden
tijdens runtime, en dus als geen van beide opties is opgegeven in de opdracht-
lijn, ld zal lange sectienamen inschakelen, waarbij de standaard wordt overschreven en
technisch correct gedrag, wanneer het de aanwezigheid van debug vindt
informatie terwijl u een uitvoerbare afbeelding koppelt en niet stript
symbolen. [Deze optie is geldig voor alle PE-gerichte poorten van de
linker]
--enable-stdcall-fixup
--disable-stdcall-fixup
Als de link een symbool vindt dat het niet kan oplossen, zal het proberen
om "fuzzy linking" uit te voeren door te zoeken naar een ander gedefinieerd symbool dat
verschilt alleen in het formaat van de symboolnaam (cdecl vs stdcall)
en zal dat symbool oplossen door naar de wedstrijd te linken. Bijvoorbeeld,
het ongedefinieerde symbool "_foo" is mogelijk gekoppeld aan de functie
"_foo@12", of het ongedefinieerde symbool "_bar@16" is mogelijk gekoppeld aan de
functie "_bar". Wanneer de linker dit doet, drukt het een waarschuwing af,
omdat het normaal gesproken niet zou hebben gelinkt, maar soms import
bibliotheken die zijn gegenereerd met dll's van derden hebben deze functie mogelijk nodig om:
bruikbaar zijn. Als u opgeeft: --enable-stdcall-fixup, deze functie is
volledig ingeschakeld en waarschuwingen worden niet afgedrukt. Als u opgeeft:
--disable-stdcall-fixup, deze functie is uitgeschakeld en dergelijke
mismatches worden als fouten beschouwd. [Deze optie is specifiek
naar de i386 PE-gerichte poort van de linker]
--leidend-onderstrepingsteken
--geen-leidende-underscore
Voor de meeste doelen is het standaard symbool-voorvoegsel een onderstrepingsteken en is
gedefinieerd in de beschrijving van het doel. Met deze optie is het mogelijk om:
schakel het standaard onderstrepingsteken symbool-prefix uit/in.
--export-alle-symbolen
Indien opgegeven, alle globale symbolen in de objecten die zijn gebruikt om een DLL te bouwen
wordt geëxporteerd door de DLL. Merk op dat dit de standaard is als
er zouden anders geen geëxporteerde symbolen zijn. Wanneer symbolen zijn
expliciet geëxporteerd via DEF-bestanden of impliciet geëxporteerd via
functieattributen, de standaard is om niets anders te exporteren
tenzij deze optie wordt gegeven. Merk op dat de symbolen "DllMain@12",
"DllEntryPoint@0", "DllMainCRTStartup@12" en "impure_ptr" zullen
niet automatisch worden geëxporteerd. Ook symbolen geïmporteerd uit andere
DLL's worden niet opnieuw geëxporteerd, evenmin als symbolen die de DLL's specificeren
interne lay-out zoals die beginnen met "_head_" of eindigend
met "_iname". Bovendien zijn er geen symbolen van "libgcc", "libstd++",
"libmingw32" of "crtX.o" wordt geëxporteerd. Symbolen waarvan de namen
beginnen met "__rtti_" of "__builtin_" wordt niet geëxporteerd, om te helpen
met C++ DLL's. Ten slotte is er een uitgebreide lijst van cygwin-
privésymbolen die niet worden geëxporteerd (dit is uiteraard van toepassing op
bij het bouwen van DLL's voor cygwin-doelen). Deze cygwin-uitsluitingen zijn:
"_cygwin_dll_entry@12", "_cygwin_crt0_common@8",
"_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1",
"cygwin_premain2", "cygwin_premain3" en "omgeving". [Deze optie
is specifiek voor de i386 PE-gerichte poort van de linker]
--exclusief-symbolen symbool,symbool, ...
Specificeert een lijst met symbolen die niet automatisch zouden moeten zijn
geëxporteerd. De namen van symbolen kunnen worden gescheiden door komma's of dubbele punten.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--exclusief-alle-symbolen
Geeft aan dat symbolen niet automatisch moeten worden geëxporteerd. [Deze
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--bestands-uitlijning
Geef de bestandsuitlijning op. Secties in het bestand beginnen altijd
bij bestandsoffsets die veelvouden zijn van dit aantal. Dit is standaard
naar 512. [Deze optie is specifiek voor de i386 PE-doelpoort van
de schakel]
--hoop reserve
--hoop reserve,plegen
Specificeer het aantal bytes geheugen dat u wilt reserveren (en optioneel
commit) om als heap voor dit programma te gebruiken. De standaard is 1 MB
gereserveerd, 4K vastgelegd. [Deze optie is specifiek voor de i386 PE
gerichte poort van de linker]
--image-basis waarde
Gebruik waarde als het basisadres van uw programma of dll. Dit is de
laagste geheugenlocatie die zal worden gebruikt wanneer uw programma of dll
is geladen. Om de noodzaak om te verhuizen te verminderen en de prestaties te verbeteren
van uw dll's, moet elk een uniek basisadres hebben en niet
andere dll's overlappen. De standaardwaarde is 0x400000 voor uitvoerbare bestanden,
en 0x10000000 voor dll's. [Deze optie is specifiek voor de i386 PE
gerichte poort van de linker]
--doden-bij
Indien gegeven, de stdcall-achtervoegsels (@nn) worden ontdaan van symbolen
voordat ze worden geëxporteerd. [Deze optie is specifiek voor de i386 PE
gerichte poort van de linker]
--groot adres bewust
Indien opgegeven, het juiste bit in het veld "Kenmerken" van de
COFF-header is ingesteld om aan te geven dat dit uitvoerbare bestand ondersteunt:
virtuele adressen groter dan 2 gigabyte. Dit moet worden gebruikt in
combinatie met de /3GB of /USERVA=waarde megabytes schakelaar in de
"[besturingssystemen]" van de BOOT.INI. Anders, dit stukje
heeft geen effect. [Deze optie is specifiek voor op PE gerichte poorten van
de schakel]
--uitschakelen-groot-adres-bewust
Keert het effect van een vorige . terug --groot adres bewust optie.
Dit is handig als: --groot adres bewust wordt altijd ingesteld door de
compiler-stuurprogramma (bijv. Cygwin gcc) en het uitvoerbare bestand niet
ondersteuning voor virtuele adressen groter dan 2 gigabyte. [Deze optie
is specifiek voor PE-gerichte poorten van de linker]
--grote-afbeelding-versie waarde
Stelt het hoofdnummer van de "afbeeldingsversie" in. Staat standaard op 1.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--major-os-versie waarde
Stelt het hoofdnummer van de "os-versie" in. Standaard ingesteld op 4. [Dit
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--grote-subsysteem-versie waarde
Stelt het hoofdnummer van de "subsysteemversie" in. Staat standaard op 4.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--minor-image-versie waarde
Stelt het secundaire nummer van de "afbeeldingsversie" in. Staat standaard op 0.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--minor-os-versie waarde
Stelt het secundaire nummer van de "os-versie" in. Staat standaard op 0. [This
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--minor-subsysteem-versie waarde
Stelt het secundaire nummer van de "subsysteemversie" in. Staat standaard op 0.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--uitvoer-def filet
De linker zal het bestand maken filet die een DEF-bestand zal bevatten
overeenkomend met de DLL die de linker genereert. Dit DEF-bestand
(die "*.def" zou moeten heten) kan worden gebruikt om een import te maken
bibliotheek met "dlltool" of kan worden gebruikt als verwijzing naar
automatisch of impliciet geëxporteerde symbolen. [Deze optie is
specifiek voor de i386 PE-gerichte poort van de linker]
--uit-implib filet
De linker zal het bestand maken filet die een import zal bevatten
lib die overeenkomt met de DLL die de linker genereert. Deze import
lib (die "*.dll.a" of "*.a" zou moeten worden gebruikt om te linken
clients tegen de gegenereerde DLL; dit gedrag maakt het mogelijk
om een aparte stap voor het maken van een "dlltool"-importbibliotheek over te slaan. [Deze
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--enable-auto-image-base
--enable-auto-image-base=waarde
Kies automatisch de afbeeldingsbasis voor DLL's, optioneel startend
met basis waarde, tenzij er een is opgegeven met de "--image-base"
argument. Door een hash te gebruiken die is gegenereerd op basis van de dll-naam om te maken
unieke afbeeldingsbases voor elke DLL, botsingen in het geheugen en
verplaatsingen die de uitvoering van het programma kunnen vertragen, worden vermeden. [Deze
optie is specifiek voor de i386 PE-gerichte poort van de linker]
--disable-auto-image-base
Genereer niet automatisch een unieke beeldbasis. Als er geen
door de gebruiker gespecificeerde afbeeldingsbasis ("--image-base") gebruik vervolgens het platform
standaard. [Deze optie is specifiek voor de i386 PE-gerichte poort van
de schakel]
--dll-zoekvoorvoegsel snaar
Als u dynamisch linkt naar een dll zonder een importbibliotheek, zoek dan
voor " .dll" in plaats van "lib .dll".
Dit gedrag maakt een eenvoudig onderscheid mogelijk tussen DLL's die zijn gebouwd voor de
verschillende "subplatforms": native, cygwin, uwin, pw, etc. Voor
cygwin DLL's gebruiken bijvoorbeeld meestal "--dll-search-prefix=cyg".
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--enable-auto-import
Voer geavanceerde koppelingen uit van "_symbol" naar "__imp__symbol" voor DATA
importeert uit DLL's, en maak de nodige thunking-symbolen wanneer:
het bouwen van de importbibliotheken met die DATA-exports. Opmerking: gebruik van
de extensie 'auto-import' zorgt ervoor dat het tekstgedeelte van de
afbeeldingsbestand beschrijfbaar te maken. Dit is niet conform de PE-
COFF-formaatspecificatie gepubliceerd door Microsoft.
Opmerking - gebruik van de extensie 'auto-import' leidt ook tot alleen-lezen
gegevens die normaal gesproken in de .rdata-sectie zouden worden geplaatst om
in plaats daarvan in de .data-sectie geplaatst. Dit is om te werken
rond een probleem met consts dat hier wordt beschreven:
http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
Het gebruik van 'auto-import' zal over het algemeen 'gewoon werken' -- maar soms moet je
kan dit bericht zien:
"variabele ' ' kan niet automatisch worden geïmporteerd. Lees de
documentatie voor ld's "--enable-auto-import" voor details."
Dit bericht verschijnt wanneer een (sub)expressie een adres benadert
uiteindelijk gegeven door de som van twee constanten (Win32 importtabellen
slechts één toestaan). Gevallen waarin dit kan gebeuren, zijn onder meer toegangen
ook naar lidvelden van struct-variabelen geïmporteerd uit een DLL
zoals het gebruik van een constante index in een arrayvariabele geïmporteerd uit a
DLL-bestand. Elke variabele met meerdere woorden (arrays, structs, long long, enz.)
deze foutconditie activeren. Echter, ongeacht de exacte
gegevenstype van de aanstootgevende geëxporteerde variabele, ld zal altijd detecteren
het, geef de waarschuwing uit en sluit af.
Er zijn verschillende manieren om dit probleem aan te pakken, ongeacht
het gegevenstype van de geëxporteerde variabele:
Een manier is om --enable-runtime-pseudo-reloc switch te gebruiken. Dit verlaat
de taak om referenties in uw klantcode aan te passen voor runtime
omgeving, dus deze methode werkt alleen wanneer de runtime-omgeving
ondersteunt deze functie.
Een tweede oplossing is om een van de 'constanten' te dwingen a
variabele -- dat wil zeggen, onbekend en niet-optimaliseerbaar tijdens het compileren.
Voor arrays zijn er twee mogelijkheden: a) maak de indexee (de
array's adres) een variabele, of b) maak de 'constante' index a
variabel. Dus:
extern type externe_array[];
extern_array[1] -->
{ vluchtig type *t=extern_array; t[1] }
or
extern type externe_array[];
extern_array[1] -->
{ vluchtig int t=1; externe_array[t] }
Voor structs (en de meeste andere datatypes met meerdere woorden) de enige optie
is om de structuur zelf (of de lange, of de ...)
variabele:
externe struct s externe_struct;
extern_struct.field -->
{ vluchtige struct s *t=&extern_struct; t->veld }
or
extern lang lang extern_ll;
extern_ll -->
{ vluchtig lang lang * local_ll=&extern_ll; *local_ll }
Een derde methode om met deze moeilijkheid om te gaan, is het opgeven
'auto-import' voor het overtredende symbool en markeer het met
"__declspec(dllimport)". In de praktijk vereist dat echter het gebruik van
compile-time #defines om aan te geven of u een DLL bouwt,
het bouwen van clientcode die naar de DLL zal linken, of alleen
bouwen/linken naar een statische bibliotheek. Bij het maken van de keuze
tussen de verschillende methoden voor het oplossen van het 'directe adres met'
constant offset'-probleem, moet u rekening houden met typische real-world
gebruik:
origineel:
--foo.h
externe int arr[];
--foo.c
#include "foo.h"
leegte main(int argc, char **argv){
printf("%d\n",arr[1]);
}
1 Oplossing:
--foo.h
externe int arr[];
--foo.c
#include "foo.h"
leegte main(int argc, char **argv){
/* Deze tijdelijke oplossing is voor win32 en cygwin; niet "optimaliseren" */
vluchtige int *parr = arr;
printf("%d\n",parr[1]);
}
2 Oplossing:
--foo.h
/* Opmerking: automatisch exporteren wordt verondersteld (geen __declspec(dllexport)) */
#if (defined(_WIN32) || gedefinieerd(__CYGWIN__)) && \
!(defined(FOO_BUILD_DLL) || gedefinieerd(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#anders
#define FOO_IMPORT
#stop als
extern FOO_IMPORT int arr[];
--foo.c
#include "foo.h"
leegte main(int argc, char **argv){
printf("%d\n",arr[1]);
}
Een vierde manier om dit probleem te voorkomen, is door uw bibliotheek opnieuw te coderen naar:
gebruik een functionele interface in plaats van een data-interface voor de
aanstootgevende variabelen (bijv set_foo() en krijg_foo() accessoire
functies). [Deze optie is specifiek voor de i386 PE-doelpoort
van de linker]
--automatisch importeren uitschakelen
Probeer geen verfijnde koppeling van "_symbol" naar
"__imp__symbol" voor DATA-import uit DLL's. [Deze optie is
specifiek voor de i386 PE-gerichte poort van de linker]
--enable-runtime-pseudo-reloc
Als uw code uitdrukkingen bevat die worden beschreven in --enable-auto-import
sectie, dat wil zeggen, DATA import van DLL met een offset die niet nul is, dit
switch zal een vector van 'runtime pseudo-verhuizingen' creëren die
kan door de runtime-omgeving worden gebruikt om verwijzingen naar dergelijke aan te passen
gegevens in uw klantcode. [Deze optie is specifiek voor de i386 PE
gerichte poort van de linker]
--disable-runtime-pseudo-reloc
Maak geen pseudo-verplaatsingen voor niet-nul gecompenseerde DATA-imports
van DLL's. [Deze optie is specifiek voor de i386 PE-doelpoort
van de linker]
--enable-extra-pe-debug
Toon aanvullende debug-informatie met betrekking tot het automatisch importeren van symbolen.
[Deze optie is specifiek voor de i386 PE-gerichte poort van de
linker]
--sectie-uitlijning
Stelt de sectie-uitlijning in. Secties in het geheugen beginnen altijd
op adressen die een veelvoud zijn van dit nummer. Standaard ingesteld op
0x1000. [Deze optie is specifiek voor de i386 PE-gerichte poort van
de schakel]
--stapelen reserve
--stapelen reserve,plegen
Specificeer het aantal bytes geheugen dat u wilt reserveren (en optioneel
commit) om als stapel voor dit programma te gebruiken. De standaard is 2 MB
gereserveerd, 4K vastgelegd. [Deze optie is specifiek voor de i386 PE
gerichte poort van de linker]
--subsysteem welke
--subsysteem welke:groot
--subsysteem welke:groot.minder
Specificeert het subsysteem waaronder uw programma zal worden uitgevoerd. De
wettelijke waarden voor welke zijn "native", "windows", "console", "posix",
en "xbox". U kunt optioneel ook de subsysteemversie instellen.
Numerieke waarden worden ook geaccepteerd voor: welke. [Deze optie is
specifiek voor de i386 PE-gerichte poort van de linker]
De volgende opties stellen vlaggen in het veld "DllCharacteristics" in
van de PE-bestandskop: [Deze opties zijn specifiek voor PE-targeted
poorten van de linker]
--hoge-entropie-va
Afbeelding is compatibel met willekeurige indeling van 64-bits adresruimte-indeling
(ASLR).
--dynamische basis
Het basisadres van de afbeelding kan worden verplaatst met behulp van de indeling van de adresruimte
randomisatie (ASLR). Deze functie is geïntroduceerd met MS Windows
Vista voor i386 PE-doelen.
--forceinteg
Er worden code-integriteitscontroles uitgevoerd.
--nxcompat
De afbeelding is compatibel met Preventie van gegevensuitvoering. Deze
functie is geïntroduceerd met MS Windows XP SP2 voor i386 PE-doelen.
--geen-isolatie
Hoewel de afbeelding isolatie begrijpt, isoleer de afbeelding niet.
--nee-seh
De afbeelding gebruikt geen SEH. Hieruit mag geen SE-handler worden aangeroepen
afbeelding.
--niet-binden
Bind deze afbeelding niet.
--wdmdriver
De driver gebruikt het MS Windows Driver Model.
--tsaware
De afbeelding is op de hoogte van Terminal Server.
--insert-tijdstempel
--geen-tijdstempel invoegen
Voeg een echte tijdstempel in de afbeelding in. Dit is de standaard
gedrag als het overeenkomt met de oude code en het betekent dat de afbeelding
zal werken met andere, propriëtaire tools. Het probleem hiermee
standaard is dat dit zal resulteren in iets andere afbeeldingen die
geproduceerd telkens dezelfde bronnen worden gekoppeld. De optie
--geen-tijdstempel invoegen kan worden gebruikt om een nulwaarde in te voegen voor de
tijdstempel, dit zorgt ervoor dat binaries geproduceerd uit identieke
bronnen zullen identiek worden vergeleken.
Het C6X uClinux-doel gebruikt een binair formaat genaamd DSBT om te ondersteunen
gedeelde bibliotheken. Elke gedeelde bibliotheek in het systeem moet een
unieke index; alle uitvoerbare bestanden gebruiken een index van 0.
--dsbt-formaat lengte van de duwkabel
Deze optie stelt het aantal vermeldingen in de DSBT van de huidige
uitvoerbare of gedeelde bibliotheek naar lengte van de duwkabel. De standaardinstelling is om een
tabel met 64 vermeldingen.
--dsbt-index index
Deze optie stelt de DSBT-index van het huidige uitvoerbare of gedeelde bestand in
bibliotheek naar index. De standaardwaarde is 0, wat geschikt is voor:
uitvoerbare bestanden genereren. Als een gedeelde bibliotheek wordt gegenereerd met a
DSBT-index van 0, de "R_C6000_DSBT_INDEX" relocs worden gekopieerd naar
het uitvoerbestand.
De --no-merge-exidx-items schakelaar schakelt het samenvoegen van . uit
aangrenzende exidx-items in frame ontspannen info.
De 68HC11- en 68HC12-linkers ondersteunen specifieke opties om de
memory bank switching mapping en trampoline code generatie.
--geen-trampoline
Deze optie schakelt het genereren van trampolines uit. Standaard a
trampoline wordt gegenereerd voor elke verre-functie die wordt aangeroepen met behulp van
een "jsr" -instructie (dit gebeurt wanneer een aanwijzer naar een far-functie)
is bezet).
--bank-venster naam
Deze optie geeft aan de linker de naam van het geheugengebied aan
in de GEHEUGEN specificatie die het geheugenbankvenster beschrijft.
De definitie van een dergelijk gebied wordt vervolgens door de linker gebruikt om te berekenen:
paging en adressen in het geheugenvenster.
De volgende opties worden ondersteund om de afhandeling van GOT . te regelen
generatie bij het koppelen voor 68K doelen.
--gekregen= type dan:
Deze optie vertelt de linker welk GOT-generatieschema moet worden gebruikt.
type dan: zou een van moeten zijn single, negatief, meervoudig or doel. Voor
meer informatie zie het Info item voor ld.
De volgende opties worden ondersteund om microMIPS-instructies te besturen:
generatie bij het koppelen voor MIPS-doelen.
--insn32
--geen-insn32
Deze opties bepalen de keuze van microMIPS-instructies die worden gebruikt in
code gegenereerd door de linker, zoals die in de PLT of lazy
bindende stubs, of in ontspanning. Als --insn32 wordt gebruikt, dan is de
linker gebruikt alleen 32-bits instructiecoderingen. Standaard of als
--geen-insn32 wordt gebruikt, worden alle instructiecoderingen gebruikt, inclusief:
Waar mogelijk 16-bits.
MILIEU
U kunt het gedrag van ld met de omgevingsvariabelen
"GNUTARGET", "LDEMULATION" en "COLLECT_NO_DEMANGLE".
"GNUTARGET" bepaalt het objectformaat van het invoerbestand als u geen gebruik maakt van -b
(of het synoniem ervan) --formaat). De waarde moet een van de BFD-namen zijn
voor een invoerformaat. Als er geen "GNUTARGET" in de omgeving is, ld
gebruikt het natuurlijke formaat van het doel. Als "GNUTARGET" is ingesteld op
"standaard" dan probeert BFD het invoerformaat te ontdekken door te onderzoeken
binaire invoerbestanden; deze methode slaagt vaak, maar er zijn mogelijkheden
dubbelzinnigheden, aangezien er geen methode is om ervoor te zorgen dat het magische getal
gebruikt om object-bestandsindelingen op te geven, is uniek. echter, de
configuratieprocedure voor BFD op elk systeem plaatst de conventionele
formaat voor dat systeem eerst in de zoeklijst, dus onduidelijkheden zijn
ten gunste van de conventie besloten.
"LDEMULATION" bepaalt de standaardemulatie als u de . niet gebruikt -m
optie. De emulatie kan verschillende aspecten van linkergedrag beïnvloeden,
met name het standaard linker-script. U kunt een lijst maken van de beschikbare
emulaties met de --uitgebreid or -V opties. Als de -m optie is niet
gebruikt en de omgevingsvariabele "LDEMULATION" is niet gedefinieerd, de
standaardemulatie hangt af van hoe de linker is geconfigureerd.
Normaal gesproken zal de linker standaard symbolen ontmantelen. Echter, als
"COLLECT_NO_DEMANGLE" is ingesteld in de omgeving, dan wordt het standaard
symbolen niet te ontrafelen. Deze omgevingsvariabele wordt gebruikt in a
soortgelijke manier door het "gcc" linker wrapper programma. De standaard kan
worden overschreven door de --ontmantelen en --geen-demangle opties.
Gebruik i686-linux-gnu-ld.bfd online met behulp van onworks.net-services