NAMN ld - Använda LD, GNU-länken SYNOPSIS ld alternativ objfile … BESKRIVNING ld kombinerar ett antal objekt och arkivfiler, flyttar deras data och kopplar samman symbolreferenser. Vanligtvis är det sista steget i att sammanställa ett program att springald. ld accepterar Linker Command Language-filer skrivna i en superset av AT & T: s Link Editor Command Language-syntax för att ge uttrycklig och total kontroll över länkprocessen. Den här mansidan beskriver inte kommandospråket; seld post i "info" eller manuellt ld: GNU-länken, för fullständiga detaljer på kommandospråket och på andra aspekter av GNU-länken. Den här versionen avld använder BFD-bibliotekens allmänna ändamål för att fungera på objektfiler. Det här tillåterld att läsa, kombinera och skriva objektfiler i många olika format --- till exempel COFF eller "a.out". Olika format kan kopplas samman för att producera vilken som helst tillgänglig typ av objektfil. Bortsett från sin flexibilitet är GNU-länken mer användbar än andra länkar i att tillhandahålla diagnostisk information. Många länkare överger körning omedelbart när de stöter på ett fel; när det är möjligt,ld fortsätter att exekvera, så att du kan identifiera andra fel (eller i vissa fall att få en utdatafil trots filmen). GNU-länkenld är tänkt att täcka ett brett spektrum av situationer, och att vara så kompatibelt som möjligt med andra länkare. Som ett resultat har du många alternativ att styra sitt beteende. ALTERNATIV Länken stöder en uppsjö av kommandoradsalternativ, men i praktiken används få av dem i ett visst sammanhang. Till exempel en frekvent användning avld är att länka standard Unix-objektfiler på ett standard Unix-system som stöds. På ett sådant system, för att länka en fil "hello.o": Jag gör /lib/crt0.o hej.o-lcDetta berättarld att producera en fil som heter produktion som ett resultat av att länka filen "/lib/crt0.o" med "hello.o" och biblioteket "libc.a", som kommer från standardkatalogerna. (Se diskussionen om-l alternativ nedan.) Några av kommandoradsalternativen tillld kan anges när som helst på kommandoraden. Alternativ som hänvisar till filer, t.ex.-l eller-T, för att filen ska läsas vid den tidpunkt då alternativet visas i kommandoraden, i förhållande till objektfilerna och andra filalternativ. Upprepa icke-filalternativ med ett annat argument kommer heller inte att ha någon ytterligare effekt eller överrätta tidigare händelser (de längre till vänster på kommandoraden) för det alternativet. Alternativ som kan vara meningsfullt angivna mer än en gång noteras i beskrivningarna nedan. Argument som inte är alternativ är objektfiler eller arkiv som ska kopplas samman. De kan följa, föregå eller blandas med kommandoradsalternativ, förutom att ett objektfilargument inte får placeras mellan ett alternativ och dess argument. Vanligtvis kallas länken med minst en objektfil, men du kan ange andra former av binära inmatningsfiler med-l, -R, och manuskommandot. Om Nej binära inmatningsfiler alls anges, länken producerar ingen utmatning och utfärdar meddelandetInga inmatningsfiler. Om länkaren inte kan känna igen formatet för en objektfil antas det att det är ett länkskript. Ett skript som anges på detta sätt förstärker huvudlänkarmen som används för länken (antingen standardlänkscriptet eller det som anges med hjälp av-T). Denna funktion tillåter länken att länka mot en fil som verkar vara ett objekt eller ett arkiv, men definierar bara några symbolvärden, eller använder "INPUT" eller "GRUPP" för att ladda andra objekt. Observera att att ange ett skript på detta sätt bara ökar huvudlänkarmen; Använd-T Alternativet att ersätta standard länkskriptet helt. För alternativ vars namn är ett enstaka bokstav måste alternativargument antingen följa alternativet utan att ingripa mellanrummet eller ges som separata argument omedelbart efter det alternativ som kräver dem. För alternativ vars namn är flera bokstäver, kan ett eller två punkter föregå alternativnamnet. till exempel,-trace-symbol och--trace-symbol är ekvivalenta. Obs! Det finns ett undantag till denna regel. Alternativ för flera bokstäver som börjar med små bokstäver "o" kan endast förekomma med två streck. Detta är att minska förvirring med-o alternativ. Så till exempel-omagic ställer ut filnamnet tillmagi medan--omagic ställer in NMAGIC-flaggan på utgången. Argument till alternativ med flera bokstäver måste antingen separeras från alternativnamnet med ett lika tecken, eller ges som separata argument omedelbart efter det alternativ som kräver dem. Till exempel,--Trace-symbol foo och--trace-symbol = foo är ekvivalenta. Unika förkortningar av namnen på flera bokstäver accepteras. Obs - om länken är indirekt åberopad, via en kompilatorns drivrutin (t.ex.gcc) då alla kommandoradsalternativ för länken ska prefixas av-Wl, (eller vad som är lämpligt för den specifika kompilatorns drivrutin) så här: gcc -Wl, - startgrupp foo.o bar.o -Wl, - endgroupDetta är viktigt, för annars kan kompilatorprogrammet tyst släppa länkalternativen, vilket resulterar i en dålig länk. Här är en tabell med generiska kommandoradsväxlar accepterade av GNU-länken: -en nyckelord Det här alternativet stöds för HP / UX-kompatibilitet. De nyckelord argument måste vara ett av strängarnaarkiv, delad, ellerstandard. -aarchive är funktionellt ekvivalent med-Bstatic, och de andra två nyckelorden är funktionellt ekvivalenta med-Bdynamic. Det här alternativet kan användas ett antal gånger. -EN arkitektur --architecture = arkitektur I den nuvarande versionen avld, detta alternativ är endast användbart för Intel 960-familjen av arkitekturer. I detld konfiguration, arkitektur argument identifierar den särskilda arkitekturen i 960-familjen, vilket möjliggör vissa skyddsåtgärder och ändrar arkivbibliotekets sökväg. Framtida utgåvor avld kan stödja liknande funktionalitet för andra arkitekturfamiljer. -b Inmatningsformat --format = Inmatningsformat ld kan konfigureras för att stödja mer än en typ av objektfil. Om dinld är konfigurerad så kan du använda-b möjlighet att ange binärformat för inmatningsobjektfiler som följer detta alternativ på kommandoraden. Även närld är konfigurerad för att stödja alternativa objektformat behöver du vanligtvis inte ange detta, somld bör konfigureras att förvänta sig som standardinmatningsformat det vanligaste formatet på varje maskin. Inmatningsformat är en textsträng, namnet på ett visst format som stöds av BFD-biblioteken. (Du kan lista de tillgängliga binära formaten medobjdump -i.) Du kanske vill använda det här alternativet om du länkar filer med ett ovanligt binärt format. Du kan också använda-b att byta format explicit (när du kopplar objektfiler i olika format), genom att inkludera-b Inmatningsformat före varje grupp av objektfiler i ett visst format. Standardformatet tas från miljövariabeln "GNUTARGET". Du kan också definiera ingångsformatet från ett skript, med kommandot "TARGET"; -c MRI-commandfile --mri-script = MRI-commandfile För kompatibilitet med länkare som produceras av MR,ld accepterar skriptfiler som är skrivna i ett alternativt, begränsat kommandospråk, beskrivet i avsnittet MRI-kompatibla skriptfiler i GNU ld-dokumentationen. Introducera MR-skriptfiler med alternativet-c; Använd-T möjlighet att köra länkskript som är skrivna i det allmänna syftetld skriptspråk. Om MRI-cmdfile existerar inte,ldletar efter det i de kataloger som anges av någon-L alternativ. -d -likström -dp Dessa tre alternativ är likvärdiga; flera former stöds för kompatibilitet med andra länkare. De tilldelar utrymme till vanliga symboler även om en flyttbar utdatafil anges (med-r). Skriptkommandot "FORCE_COMMON_ALLOCATION" har samma effekt. -e inträde --entry = inträde Använda sig av inträde som den exakta symbolen för att börja ditt program, snarare än standardinmatningspunkten. Om det inte finns någon symbol som heter inträde , länken kommer att försöka analysera inträde som ett nummer, och använd det som postadressen (numret tolkas i bas 10, du kan använda en ledande0x för bas 16, eller en ledande0 för bas 8). -E --export dynamiska När du skapar en dynamiskt länkad körbar, lägg till alla symboler i den dynamiska symboltabellen. Den dynamiska symboltabellen är uppsättningen symboler som är synliga från dynamiska objekt vid körtiden. Om du inte använder det här alternativet innehåller den dynamiska symboltabellen normalt bara de symbolerna som refereras av ett dynamiskt objekt som nämns i länken. Om du använder "dlopen" för att ladda ett dynamiskt objekt som behöver hänvisas till de symboler som definieras av programmet, i stället för något annat dynamiskt objekt, kommer du förmodligen att behöva använda det här alternativet när du kopplar själva programmet. Du kan också använda versionsskriptet för att styra vilka symboler som ska läggas till i den dynamiska symboltabellen om utmatningsformatet stöder det. Se beskrivningen av--version-script i @ ref {VERSION}. -eb Länk stora endian objekt. Detta påverkar standardutmatningsformatet. -el Länk småendena objekt. Detta påverkar standardutmatningsformatet. -f --extra namn När du skapar ett ELF-delat objekt anger du det interna DT_AUXILIARY-fältet till det angivna namnet. Detta berättar den dynamiska länkaren att symboltabellen för det delade objektet ska användas som ett extrafilter på symboltabellen för det delade objektet namn . Om du senare kopplar ett program mot det här filterobjektet, så visas det DT_AUXILIARY-fältet när du kör programmet. Om den dynamiska länkaren löser några symboler från filterobjektet, kontrollerar den först om det finns en definition i det delade objektet namn . Om det finns en, kommer det att användas istället för definitionen i filterobjektet. Det delade objektet namn behöver inte existera. Således delade objektet namn kan användas för att tillhandahålla ett alternativt genomförande av vissa funktioner, kanske för debugging eller för maskinspecifik prestanda. Det här alternativet kan anges mer än en gång. DT_AUXILIARY-inmatningarna kommer att skapas i den ordning de visas på kommandoraden. -F namn --filtrera namn När du skapar ett ELF-delat objekt anger du det interna DT_FILTER-fältet till det angivna namnet. Detta berättar den dynamiska länkaren att symboltabellen för det delade objektet som skapas ska användas som ett filter på symboltabellen för det delade objektet namn . Om du senare kopplar ett program mot det här filterobjektet, då visas programmet DT_FILTER när du kör programmet. Den dynamiska länkaren kommer att lösa symboler enligt symbolobjektet för filterobjektet som vanligt, men det kommer faktiskt att länka till definitionerna som finns i det delade objektet namn . Sålunda kan filterobjektet användas för att välja en delmängd av symbolerna som tillhandahålls av objektet namn . Vissa äldre linkers använde-F alternativet i en kompileringsverktygskedja för att ange objektfilformat för både inmatnings- och utdatobjektfiler. GNU-länken använder andra mekanismer för detta ändamål:-b, --formatera, --oformat alternativ, "TARGET" -kommandot i länkskript och miljövariabeln "GNUTARGET". GNU-länken kommer att ignorera-F alternativ när du inte skapar ett ELF-delat objekt. -fini namn När du skapar ett ELF-exekverbart eller delat objekt, ringa NAME när det körbara eller delade objektet lossas, genom att ange DT_FINI till adressen till funktionen. Som standard använder länken "_fini" som funktion för att ringa. -g Ignoreras. Tillhandahålls för kompatibilitet med andra verktyg. -G värde --gpsize = värde Ange maximal storlek på objekt som ska optimeras med GP-registret till storlek . Detta är bara meningsfullt för objektfilformat som MIPS ECOFF som stöder att sätta stora och små objekt i olika sektioner. Detta ignoreras för andra objektfilformat. -h namn -soname = namn När du skapar ett ELF-delat objekt anger du det interna DT_SONAME-fältet till det angivna namnet. När en körbar länk är kopplad till ett delat objekt som har ett DT_SONAME-fält, försöker den dynamiska länkenheten att ladda det delade objektet som anges av DT_SONAME-fältet istället för att använda filnamnet som ges till länken. -jag Utför en inkrementell länk (samma som alternativ-r). -i det namn När du skapar ett ELF-körbart eller delat objekt, ringa NAME när det körbara eller delade objektet laddas, genom att ställa in DT_INIT till adressen till funktionen. Som standard använder länken "_init" som funktionen att ringa. -l arkiv --library = arkiv Lägg till arkivfil arkiv till listan över filer som ska länkas. Det här alternativet kan användas ett antal gånger.ld kommer att söka sin sökväg för händelser av "libarchive.a" för varje arkiv specificerad. På system som stöder delade bibliotek,ld kan också söka efter bibliotek med andra tillägg än ".a". Specifikt på ELF och SunOS-system,ld kommer att söka i en katalog för ett bibliotek med en förlängning av ".so" innan du letar efter en med en förlängning av ".a". Enligt konventionen anger en ".so" -tillägg ett gemensamt bibliotek. Länkaren söker endast ett arkiv en gång, på den plats där den anges på kommandoraden. Om arkivet definierar en symbol som var odefinierad i något objekt som förekommit före arkivet på kommandoraden, kommer länken att innehålla lämpliga fil (er) från arkivet. En odefinierad symbol i ett objekt som visas senare på kommandoraden leder emellertid inte till att länken kan söka i arkivet igen. Se-( alternativ för ett sätt att tvinga länken till att söka arkiv flera gånger. Du kan lista samma arkiv flera gånger på kommandoraden. Denna typ av arkivsökning är standard för Unix-länkar. Men om du använderld påAIX, notera att det skiljer sig från AIX-länkarnas beteende. -L searchdir --library-path = searchdir Lägg till sökvägen searchdir till listan över vägar somld kommer att söka efter arkivbibliotek ochld kontrollskript. Du kan använda det här valet varje antal gånger. Katalogerna söks i den ordning som de anges på kommandoraden. Kataloger som anges på kommandoraden söks före standardkatalogerna. Allt-L alternativ gäller för alla-l alternativ, oavsett vilken ordning alternativen visas i. Om searchdir börjar med "=", då kommer "=" att ersättas av sysroot prefix , en sökväg som anges när länken är konfigurerad. Standard uppsättningen sökvägar (utan att anges med-L) beror på vilket emuleringslägeld använder, och i vissa fall också hur det konfigurerades. Banorna kan också anges i ett länkscript med kommandot "SEARCH_DIR". Kataloger som anges på det här sättet söks på den punkt där länkskriptet visas i kommandoraden. -m tävlan Emulera tävlan linker. Du kan lista de tillgängliga emuleringarna med--mångordig eller-Valternativ. Om-m alternativet används inte, emuleringen tas från "LDEMULATION" miljövariabeln, om den är definierad. Annars beror standardemuleringen på hur länken är konfigurerad. -M --print-karta Skriv ut en länkskarta till standardutgången. En länkkarta ger information om länken, inklusive följande: * Där objektfiler och symboler är mappade i minnet. * Hur vanliga symboler tilldelas. * Alla arkivmedlemmar som ingår i länken, med omnämnande av symbolen som ledde till att arkivmedlemmen kom med. -n --nmagic Stäng av sidanjustering av sektioner och markera utmatningen som "NMAGIC" om möjligt. -N --omagic Ställ in text- och datasektionerna för att läsas och skrivas. Sänk inte sidsegmentet på datasegmentet och inaktivera länkning mot delade bibliotek. Om utmatningsformat stöder magasnumren i Unix-stilen markerar du utmatningen som "OMAGIC". --no-omagic Detta alternativ negerar de flesta effekterna av-N alternativ. Den ställer in textavsnittet som skrivskyddad, och tvingar datasegmentet att sidjusteras. Obs! Det här alternativet tillåter inte länkning mot delade bibliotek. Använda sig av-Bdynamic för detta. -o produktion --output = produktion Använda sig av produktion som namnet på programmet som produceras avld; Om det här alternativet inte är angivet, namnet a.out används som standard. Skriptkommandot "OUTPUT" kan också ange utdatafilnamnet. -O nivå Om nivå är ett numeriskt värde större än nollld optimerar utsignalen. Detta kan ta betydligt längre tid och därför bör det antagligen endast vara aktiverat för det slutliga binära. -q --emit-relocs Lämna omlokaliseringssektioner och innehåll i helt länkade exececutables. Postlänkanalys och optimeringsverktyg kan behöva denna information för att kunna utföra korrekta ändringar av körbara filer. Detta resulterar i större körbara filer. Det här alternativet stöds för närvarande bara på ELF-plattformar. -r --relocateable Generera flyttbar utgång --- dvs skapa en utdatafil som i sin tur kan fungera som input tillld. Detta kallas ofta partiell länkning . Som en bieffekt, i miljöer som stöder standard Unix magiska tal, ställer detta alternativ också utdatafilens magiska nummer till "OMAGIC". Om det här alternativet inte anges, produceras en absolut fil. När du kopplar C ++-program, det här alternativet ska inte lösa referenser till konstruktörer; att göra det, använd-ur. När en inmatningsfil inte har samma format som utdatafilen stöds en delad länk endast om den ingående filen inte innehåller några flyttningar. Olika utmatningsformat kan ha ytterligare begränsningar. till exempel vissa "a.out" -baserade format stöder inte delvis länkning med inmatningsfiler i andra format alls. Detta alternativ gör detsamma som-jag. -R filnamn --just-symboler = filnamn Läs symbolnamn och deras adresser från filnamn , men flytta inte den eller ta den med i utmatningen. Detta låter din utdatafil hänvisa symboliskt till absoluta minnesplatser som definieras i andra program. Du kan använda det här alternativet mer än en gång. För kompatibilitet med andra ELF-länkar, om-R alternativet följs av ett katalognamn, snarare än ett filnamn, det behandlas som-rpath alternativ. -s --strip-all Ta bort all symbolinformation från utdatafilen. -S --strip-debug Borttag debugger-symbolinformation (men inte alla symboler) från utdatafilen. -t --spår Skriv ut namnen på inmatningsfilerna somld behandlar dem. -T skriptfilen --script = skriptfilen Använda sig av skriptfilen som länkskriptet. Detta skript ersätterlds default linker script (istället för att lägga till det), så commandfile måste ange allt som är nödvändigt för att beskriva utdatafilen. Om skriptfilen existerar inte i den aktuella katalogen, "ld" letar efter den i de kataloger som anges av föregående-L alternativ. Flera olika-T alternativ ackumuleras. -u symbol --undefined = symbol Tvinga symbol att matas in i utdatafilen som en odefinierad symbol. Om du gör det kan du till exempel utlösa koppling av ytterligare moduler från standardbibliotek.-u kan upprepas med olika alternativargument för att ange ytterligare odefinierade symboler. Det här alternativet motsvarar kommandot "EXTERN" länkskript. -ur För något annat än C ++-program motsvarar det här alternativet-r: det genererar flyttbar utgång --- dvs en utdatafil som i sin tur kan fungera som input tillld. När man kopplar C ++-program,-ur gör Lös referenser till konstruktörer, till skillnad från-r. Det fungerar inte att använda-ur på filer som var själva kopplade till-ur; När konstruktortabellen har byggts kan den inte läggas till. Använda sig av-ur endast för den sista dellänken, och-r för de andra. --unique = SEKTION Skapar en separat utmatningssektion för varje inmatningssektion som matchar SEKTION , eller om valfritt jokertecken SEKTION argument saknas, för varje föräldralös inmatningssektion. En föräldralös del är en som inte specifikt nämns i ett länkscript. Du kan använda det här alternativet flera gånger på kommandoraden. Det förhindrar den normala sammanslagningen av inmatningssektioner med samma namn, överordnade utdelningsuppdrag i ett länkscript. -v --version -V Visa versionsnumret förld. De-V alternativet listar även de stödda emuleringarna. -x --discard-all Ta bort alla lokala symboler. -X --discard-lokalbefolkningen Ta bort alla tillfälliga lokala symboler. För de flesta mål är detta alla lokala symboler vars namn börjar medL. -y symbol --trace-symbol = symbol Skriv ut namnet på varje länkad fil där symbol visas. Det här alternativet kan ges ett visst antal gånger. På många system är det nödvändigt att förordna en understrykning. Det här alternativet är användbart när du har en odefinierad symbol i din länk men vet inte var referensen kommer ifrån. -Y väg Lägg till väg till standardbibliotekets sökväg. Det här alternativet finns för Solaris-kompatibilitet. -z nyckelord De erkända sökorden är "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" och "nocopyreloc ". De andra sökorden ignoreras för Solaris-kompatibilitet. "initfirst" markerar objektet som ska initieras först vid körning före några andra objekt."interpose" markerar det objekt som dess symbolbord placerar inför alla symboler men det primära körbara. "loadfltr" markerar objektet som dess filtees behandlas omedelbart vid körning. "nodefaultlib" markerar objektet som sökningen efter beroende av detta objekt kommer att ignorera alla sökvägar för standardbibliotek. "nodelete" markerar att objektet inte ska lossas vid körning. "nodlopen" markerar objektet inte tillgängligt för "dlopen". "nodump" markerar objektet kan inte dumpas med "dldump". "nu" markerar objektet med den icke-lata runtimebindningen. "Ursprung" markerar att objektet kan innehålla $ ORIGIN. "defs" tillåter odefinierade symboler. "muldefs" tillåter flera definitioner. "combreloc" kombinerar flera relokroppar och sorterar dem för att möjliggöra dynamisk symboluppslagning. "nocombreloc" inaktiverar kombinationer av flera relokroppar. "nocopyreloc" inaktiverar produktion av kopiorelektroder. -( arkiv -) --start-grupp arkiv --end-grupp De arkiv bör vara en lista över arkivfiler. De kan vara antingen explicit filnamn eller-lalternativ. De angivna arkiven söks upprepade gånger tills inga nya odefinierade referenser skapas. Normalt söks ett arkiv endast en gång i den ordning som den anges på kommandoraden. Om en symbol i det arkivet behövs för att lösa en odefinierad symbol som hänvisas till av ett objekt i ett arkiv som visas senare på kommandoraden, skulle länken inte kunna lösa den här referensen. Genom att gruppera arkiven, sökes de alla upprepade gånger tills alla möjliga referenser är löst. Användning av detta alternativ har en betydande prestationskostnad. Det är bäst att använda det bara när det finns oundvikliga cirkulära referenser mellan två eller flera arkiv. --accept-okänt-input-arch --no-accept-okänt-input-arch Berättar länken att acceptera inmatningsfiler vars arkitektur inte kan identifieras. Antagandet är att användaren vet vad de gör och medvetet vill länka i dessa okända inmatningsfiler. Detta var standardbeteendet hos länken, före utgåva 2.14. Standardbeteendet från version 2.14 och framåt är att avvisa sådana inmatningsfiler, och så--accept-okänt-input-arch alternativet har lagts till för att återställa det gamla beteendet. -hävda nyckelord Det här alternativet ignoreras för SunOS-kompatibilitet. -Bdynamic -dy -call_shared Länk till dynamiska bibliotek. Detta är bara meningsfullt på plattformar för vilka delade bibliotek stöds. Det här alternativet är normalt standard på sådana plattformar. De olika varianterna av detta alternativ är kompatibla med olika system. Du kan använda det här alternativet flera gånger på kommandoraden: det påverkar bibliotekets sökning efter-l alternativ som följer den. -Bgroup Ange "DF_1_GROUP" -flaggan i "DT_FLAGS_1" -posten i den dynamiska sektionen. Detta medför att runtime-länkaren hanterar uppslag i det här objektet och dess beroenden som endast ska utföras inom gruppen.--no-undefined är underförstådd. Det här alternativet är bara meningsfullt på ELF-plattformar som stöder delade bibliotek. -Bstatic -dn -non_shared -statisk Länk inte till delade bibliotek. Detta är bara meningsfullt på plattformar för vilka delade bibliotek stöds. De olika varianterna av detta alternativ är kompatibla med olika system. Du kan använda det här alternativet flera gånger på kommandoraden: det påverkar bibliotekets sökning efter-l alternativ som följer den. -Bsymbolic När du skapar ett delat bibliotek kopplar du referenser till globala symboler till definitionen i det delade biblioteket, om det finns några. Normalt är det möjligt för ett program kopplat till ett delat bibliotek för att åsidosätta definitionen i det delade biblioteket. Det här alternativet är bara meningsfullt på ELFplatformar som stöder delade bibliotek. --check sektioner --no-check sektioner Fråga länken inte för att kontrollera avsnittadresser efter att de har tilldelats för att se om det finns några överlappningar. Normalt kommer länken att utföra denna kontroll, och om det finner några överlappningar kommer det att producera lämpliga felmeddelanden. Länken känner till och gör ersättning för sektioner i överlagringar. Standardbeteendet kan återställas med hjälp av kommandoradsväxeln--check sektioner. --cref Skriv ut en korsreferens tabell. Om en länkarkartfil genereras genereras korsreferenstabellen till kartfilen. Annars skrivs den ut på standardutgången. Tabellformatet är avsiktligt enkelt, så det kan enkelt hanteras av ett skript om det behövs. Symbolerna är utskrivna, sorterade efter namn. För varje symbol anges en lista med filnamn. Om symbolen är definierad, är den första filen som anges är platsen för definitionen. De återstående filerna innehåller hänvisningar till symbolen. --no-define-gemensamma Det här alternativet hämmar tilldelningen av adresser till vanliga symboler. Skriptkommandot "INHIBIT_COMMON_ALLOCATION" har samma effekt. De--no-define-gemensamma alternativet möjliggör avkoppling av beslutet att tilldela adresser till vanliga symboler från valet av utdatafilstypen; annars tvingar en icke-flyttbar utskriftstyp att tilldela adresser till vanliga symboler. Använder sig av--no-define-gemensamma tillåter gemensamma symboler som refereras från ett delat bibliotek som endast ska tilldelas adresser i huvudprogrammet. Detta eliminerar det oanvända dubbla utrymmet i det delade biblioteket och förhindrar också eventuell förvirring över att lösa till fel duplikat när det finns många dynamiska moduler med specialiserade sökvägar för runtime-symbolupplösning. --defsym symbol = uttryck Skapa en global symbol i utdatafilen, innehållande den absoluta adressen som ges av uttryck . Du kan använda det här alternativet så många gånger som nödvändigt för att definiera flera symboler i kommandoraden. En begränsad form av aritmetik stöds för uttryck i detta sammanhang: du kan ge en hexadecimal konstant eller namnet på en befintlig symbol, eller använd "+" och "-" för att lägga till eller subtrahera hexadecimala konstanter eller symboler. Om du behöver mer utförliga uttryck, överväg att använda kommandospråket Länkar från ett skript. Notera: Det borde inte finnas något vitt utrymme mellan symbol , lika signalen (``=''), och uttryck . --demangle = stil --no-demangle Dessa alternativ kontrollerar om du vill demonstra symbolnamn i felmeddelanden och annan utmatning. När länkaren berättas att demangle försöker den presentera symbolnamn på ett läsbart sätt: den spårar ledande underskrifter om de används av objektfilformatet och omvandlar C ++-manglade symbolnamn till användarläsbara namn. Olika kompilatörer har olika manglingstilar. Det valfria demangling stil argumentet kan användas för att välja en lämplig demangling stil för din kompilator. Länken kommer att demangle som standard om inte miljövariabelnCOLLECT_NO_DEMANGLE är inställd. Dessa alternativ kan användas för att åsidosätta standardvärdet. --dynamic-linker fil Ange namnet på den dynamiska länkaren. Detta är bara meningsfullt när du genererar dynamiskt länkade ELF-körbara filer. Standard dynamisk länkare är normalt korrekt; använd inte detta om du inte vet vad du gör. --embedded-relocs Det här alternativet är endast meningsfullt när du kopplar MIPS-inbyggd PIC-kod, genererad av alternativet -membedded-pic till GNU-kompilatorn och assembleren. Det får länken att skapa ett bord som kan användas vid körning för att flytta alla data som statiskt initierades till pekarvärden. Se koden i testsuite / ld-empic för detaljer. --fatal-varningar Behandla alla varningar som fel. --force-exe-suffix Se till att en utdatafil har ett .exe-suffix. Om en framgångsrik byggd fullständigt länkad utdatafil inte har suffixet ".exe" eller ".dll", tvingar detta alternativ länken att kopiera utdatafilen till ett av samma namn med ett suffix .exe. Det här alternativet är användbart när du använder omodifierade Unix makefiles på en Microsoft Windows-värd, eftersom vissa versioner av Windows inte kör en bild om inte den slutar i ett suffix .exe. --no-gc sektioner --gc sektioner Aktivera skräpsamling av oanvända inmatningssektioner. Det ignoreras på mål som inte stöder detta alternativ. Det här alternativet är inte kompatibelt med-r, inte heller ska den användas med dynamisk koppling. Standardbeteendet (om du inte utför denna skräpsamling) kan återställas genom att ange--no-gc sektioner på kommandoraden. --hjälp Skriv ut en sammanfattning av kommandoradsalternativen på standardutmatningen och avsluta. --target-help Skriv ut en sammanfattning av alla målspecifika alternativ på standardutmatningen och utgången. -Karta mapfile Skriv ut en länkskarta till filen mapfile . Se beskrivningen av-M alternativ ovan. --no-keep-minne ld optimerar normalt för hastighet över minnesanvändning genom att cacha symboltabellerna av inmatningsfiler i minnet. Detta alternativ berättarld att istället optimera för minnesanvändning genom att läsa om symboltabellerna efter behov. Detta kan krävas omld går tom för minnesutrymme medan du kopplar en stor körbar. --no-undefined -s dövar Normalt när du skapar ett icke-symboliskt delat bibliotek tillåts odefinierade symboler och lämnas för att lösas av runtime loader. Dessa alternativ tillåter sådana odefinierade symboler. --allow-multipel-definition -z muldefs Normalt när en symbol definieras flera gånger kommer länken att rapportera ett dödligt fel. Dessa alternativ tillåter flera definitioner och den första definitionen kommer att användas. --allow-shlib-undefined Tillåt odefinierade symboler i delade objekt även när - inte-odefinierad är inställd. Nettoresultatet blir att odefinierade symboler i vanliga föremål fortfarande kommer att utlösa ett fel, men odefinierade symboler i delade objekt kommer att ignoreras. Genomförandet av no_undefined gör antagandet att runtime-länken kommer att kväva på odefinierade symboler. Det finns dock minst ett system (BeOS) där odefinierade symboler i delade bibliotek är normala eftersom kärnan patcharar dem vid laddningstid för att välja vilken funktion som är mest lämplig för den aktuella arkitekturen. I.E. Välj en lämplig memset-funktion dynamiskt. Tydligen är det också normalt för HPPA-delade bibliotek att ha odefinierade symboler. --no-undefined-versionen Normalt när en symbol har en odefinierad version ignorerar länken den. Det här alternativet tillåter symboler med odefinierad version och ett dödligt fel kommer att utfärdas istället. --no-warn-mismatch I vanliga fallld kommer att ge ett fel om du försöker länka samman inmatningsfiler som inte matchas av någon anledning, kanske för att de har sammanställts för olika processorer eller för olika endianheter. Detta alternativ berättarld att det tyst skulle tillåta sådana möjliga fel. Det här alternativet bör endast användas med försiktighet, i de fall då du har tagit några speciella åtgärder som säkerställer att länkfel är olämpliga. --no-hela-arkiv Stäng av effekten av--whole-arkiv alternativ för efterföljande arkivfiler. --noinhibit-exec Behåll den körbara utdatafilen när den fortfarande är användbar.Normalt producerar länken inte en utdatafil om den stöter på fel under länkprocessen. det går ut utan att skriva en utdatafil när den utfärdar något fel alls. -nostdlib Sök bara i bibliotekskataloger som uttryckligen anges på kommandoraden. Bibliotekskataloger som anges i länkskript (inklusive länkskript som anges på kommandoraden) ignoreras. --oformat Utmatningsformat ld kan konfigureras för att stödja mer än en typ av objektfil. Om dinld är konfigurerad så kan du använda--oformat alternativ för att ange binärformat för utgångsobjektfilen. Även närld är konfigurerad för att stödja alternativa objektformat behöver du vanligtvis inte ange detta, somld bör konfigureras att producera som vanligt utmatningsformat det vanligaste formatet på varje maskin. Utmatningsformat är en textsträng, namnet på ett visst format som stöds av BFD-biblioteken. (Du kan lista de tillgängliga binära formaten medobjdump -i.) Skriptkommandot "OUTPUT_FORMAT" kan också ange utdataformat, men det här alternativet strider mot det. -qmagic Det här alternativet ignoreras för Linux-kompatibilitet. -Qy Det här alternativet ignoreras för SVR4-kompatibilitet. --koppla av Ett alternativ med maskinberoende effekter. Det här alternativet stöds endast på några få mål. På vissa plattformar,--koppla av alternativet utförs globala optimeringar som blir möjliga när länken löser adressering i programmet, till exempel avkopplande adresslägen och syntetisering av nya instruktioner i utgångsobjektfilen. På vissa plattformar kan dessa globala optimeringar av länktid göra det omöjligt att symboliskt felsöka den resulterande körbarheten. Detta är känt för fallet för processorerna Matsushita MN10200 och MN10300. På plattformar där detta inte stöds,--koppla av accepteras, men ignoreras. --retain-symbols-fil filnamn Behålla endast de symboler som anges i filen filnamn , kassera alla andra. filnamn är helt enkelt en platt fil, med ett symbolnamn per rad. Det här alternativet är särskilt användbart i miljöer (t.ex. VxWorks) där ett stort globalt symboltabell ackumuleras gradvis för att spara speltidminne. --retain-symbols-fil gör inte kassera odefinierade symboler eller symboler som behövs för flyttningar. Du får bara ange--retain-symbols-fil en gång i kommandoraden. Det strider mot-s och-S. -rpath dir Lägg till en katalog i sökväg för runtime bibliotek. Detta används när du länkar en ELFexecutable med delade objekt. Allt-rpath argument sammanfogas och skickas till runtime-länken, som använder dem för att lokalisera delade objekt vid körning. De-rpath Alternativet används också när man lokaliserar delade objekt som behövs av delade objekt som uttryckligen ingår i länken. se beskrivningen av-rpath-länk alternativ. Om-rpath används inte när man kopplar en ELF-körbar, kommer innehållet i miljövariabeln "LD_RUN_PATH" att användas om den är definierad. De-rpath Alternativet kan också användas på SunOS. Som standard, på SunOS, kommer länken att bilda en runtime search patch av alla-L alternativ som den ges. Om en-rpath alternativet används, kommer sökvägs sökvägen att bildas exklusivt med hjälp av-rpath alternativ, ignorerar-Lalternativ. Detta kan vara användbart när du använder gcc, vilket lägger till många-L alternativ som kan vara onNFS-monterade filsystem. För kompatibilitet med andra ELF-länkar, om-R alternativet följs av ett katalognamn, snarare än ett filnamn, det behandlas som-rpath alternativ. -rpath-länk DIR När du använder ELF eller SunOS kan ett delat bibliotek kräva ett annat. Detta händer när en länk med "ld-delad" innehåller ett delat bibliotek som en av inmatningsfilerna. När länkaren möter ett sådant beroende när du gör en icke-delad, icke-flyttbar länk, försöker den automatiskt hitta det obligatoriska delade biblioteket och inkludera det i länken om det inte ingår explicit. I ett sådant fall-rpath-länk alternativ anger den första uppsättningen kataloger att söka. De-rpath-länk Alternativet kan ange en sekvens av katalognamn antingen genom att ange en lista med namn separerade av kolon eller genom att visas flera gånger. Det här alternativet bör användas med försiktighet, eftersom det överväger sökvägen som kan ha varit svårt sammanställd i ett delat bibliotek. I ett sådant fall är det möjligt att oavsiktligt använda en annan sökväg än runtime-länken skulle göra. Länken använder följande sökvägar för att hitta nödvändiga delade bibliotek. 1. Alla kataloger som anges av-rpath-länk alternativ. 2. Alla kataloger som anges av-rpath alternativ. Skillnaden mellan-rpath och-rpath-länk är de kataloger som anges av-rpath alternativ är inkluderade i körbar och används vid körning, medan-rpath-länk Alternativet är endast effektivt vid länktid. Det är endast för den inhemska länken. 3. På ett ELF-system, om-rpath och alternativet "rpath-länk" användes inte, sök innehållet i miljövariabeln "LD_RUN_PATH". Det är endast för den inhemska länken. 4. På SunOS, om-rpath Alternativet användes inte, sök alla kataloger som anges med-L alternativ. 5. För en inbyggd länk, innehållet i miljövariabeln "LD_LIBRARY_PATH". 6. För en inbyggd ELF-länk sökes katalogerna i "DT_RUNPATH" eller "DT_RPATH" i ett gemensamt bibliotek för delade bibliotek som behövs av den.Posterna "DT_RPATH" ignoreras om "DT_RUNPATH" -poster finns. 7. Standard kataloger, normalt / lib och / Usr / lib . 8. För en inbyggd länkare på ett ELF-system, om filen /etc/ld.so.conf existerar listan över kataloger som finns i den filen. Om det obligatoriska delade biblioteket inte hittas, kommer länken att utfärda en varning och fortsätta med länken. -delad -Bshareable Skapa ett delat bibliotek. Detta stöds för närvarande endast på ELF, XCOFF och SunOS-plattformar. På SunOS skapar länken automatiskt ett delat bibliotek om-e Alternativet används inte och det finns odefinierade symboler i länken. --sort-common Detta alternativ berättarld för att sortera de gemensamma symbolerna efter storlek när de placeras i lämpliga utgångssektioner. Först kommer alla en byte symboler, då alla två byte, då alla fyra byte, och sedan allt annat. Detta för att förhindra mellanrum mellan symboler på grund av anpassningsbegränsningar. --split-by-file storlek Liknande--split-för-reloc men skapar en ny utmatningssektion för varje inmatningsfil när storlek är nådd. storlek standard till en storlek om 1 om den inte ges. -split-by-reloc räkna Försöker skapa extra sektioner i utdatafilen så att ingen enda utmatningssektion i filen innehåller mer än räkna omflyttningar. Detta är användbart när du genererar enorma flyttbara filer för nedladdning i vissa realtidskärnor med COFF-objektfilformatet. eftersom COFFcannot representerar mer än 65535 flyttningar i ett enda avsnitt. Observera att detta inte fungerar med objektfilformat som inte stöder godtyckliga avsnitt. Länkaren delar inte upp enskilda inmatningssektioner för omfördelning, så om en enskild ingångssektion innehåller mer än räkna flyttningar en utmatningsdel kommer att innehålla så många flyttningar. räkna standardvärdet 32768. --stats Beräkna och visa statistik om länkens funktion, t.ex. exekveringstid och minnesanvändning. --traditional-format För vissa mål, produktionen avld är annorlunda på något sätt från produktionen av någon befintlig länk. Denna omkopplare begärld att använda det traditionella formatet istället. Till exempel på SunOS,ld kombinerar dubbla poster i symbolsträngbordet. Detta kan minska storleken på en utdatafil med fullständig felsökningsinformation med över 30 procent. Tyvärr kan SunOS "dbx" -programmet inte läsa det resulterande programmet ("gdb" har inga problem). De--traditional-format omkopplaren berättarld att inte kombinera dubbla poster. --section-start sectionname = org Leta reda på en sektion i utdatafilen på den absoluta adressen som ges av org . Du kan använda det här alternativet så många gånger som nödvändigt för att hitta flera sektioner i kommandoraden. org måste vara ett enda hexadecimalt heltal; För kompatibilitet med andra länkare kan du utelämna ledande0x brukar associeras med hexadecimala värden. Notera: Det borde inte finnas något vitt utrymme mellan sectionname , lika signalen (``=''), och org . -Tbss org -Tdata org -Ttext org Använda sig av org som startadress för --- respektive --- "bss", "data" eller "text" -segmentet i utdatafilen. org måste vara ett enda hexadecimalt heltal; För kompatibilitet med andra länkare kan du utelämna ledande0x brukar associeras med hexadecimala värden. --dll-verbose --mångordig Visa versionsnumret förld och lista de länkaremuleringar som stöds. Visa vilka inmatningsfiler som kan och kan inte öppnas. Visa länkskriptet som används av länken. --version-script = version-skriptfilen Ange namnet på ett versionsskript till länken. Detta används vanligtvis när du skapar delade bibliotek för att ange ytterligare information om versionshävdarkivet för biblioteket som skapas. Det här alternativet är bara meningsfullt på ELF-plattformar som stöder delade bibliotek. --warn-common Varna när en gemensam symbol kombineras med en annan gemensam symbol eller med en symboldefinition. Unix-länkar tillåter detta lite slarvigt träning, men länkar på andra operativsystem gör det inte. Med det här alternativet kan du hitta potentiella problem från att kombinera globala symboler. Tyvärr använder vissa C-bibliotek denna övning, så du kan få några varningar om symboler i biblioteken och i dina program. Det finns tre typer av globala symboler, illustrerad här med exempel C: int i = 1; En definition, som går i den initialiserade datasektionen i utdatafilen. extern int jag; En odefinierad referens, som inte allokerar utrymme. Det måste vara antingen en definition eller en gemensam symbol för variabeln någonstans. int jag; En vanlig symbol. Om det bara finns (en eller flera) vanliga symboler för en variabel, går det i den oinitierade dataområdet för utdatafilen. Linker sammanfogar flera vanliga symboler för samma variabel i en enda symbol. Om de har olika storlekar, väljer den den största storleken. Länkaren gör en gemensam symbol till en deklaration, om det finns en definition av samma variabel. De--warn-common alternativet kan producera fem typer av varningar. Varje varning består av ett par linjer: den första beskriver symbolen som bara stött på, och den andra beskriver den tidigare symbolen som möter samma namn. Ett eller båda av de två symbolerna kommer att vara en gemensam symbol. 1. Att sätta en gemensam symbol i en referens, eftersom det redan finns en definition för symbolen. (): varning: vanligt av `"överträffas per definition (): varning: definierad här2. Omvandlar en gemensam symbol till en referens, eftersom en senare definition av symbolen uppträder. Detta är detsamma som i föregående fall, förutom att symbolerna uppträder i en annan ordning. (): varning: definition av `"övergripande gemensamt (): varning: vanligt är här3. Sammanslagning av en gemensam symbol med en tidigare gemensam gemensam symbol med samma storlek. (): varning: flera vanliga av `' (): varning: tidigare vanligt är här4. Sammanslagning av en gemensam symbol med en tidigare större gemensam symbol. (): varning: vanligt av `"överdriven av större vanliga (): varning: större vanligt är här5. Sammanslagning av en gemensam symbol med en tidigare mindre gemensam symbol. Detta är detsamma som i föregående fall, förutom att symbolerna uppträder i en annan ordning. (): varning: vanligt av `"tvingande mindre vanligt (): varning: mindre vanligt är här--warn-konstruktörer Varna om några globala konstruktörer används. Detta är endast användbart för ett fåtal objektfilformat. För format som COFF eller ELF kan länken inte detektera användningen av globala konstruktörer. --warn-multipel-gp Varna om flera globala pekarvärden krävs i utdatafilen. Detta är bara meningsfullt för vissa processorer, som Alpha. Specifikt sätter vissa processorer stora värderade konstanter i en speciell sektion. Ett specialregister (den globala pekaren) pekar in i mitten av detta avsnitt, så att konstanter kan laddas effektivt via ett basregister relativ adresseringsläge. Eftersom offset i basregisterregistret är fixerat och relativt litet (t ex 16 bitar), begränsar detta den maximala storleken av den konstanta poolen. Således är det i stora program ofta nödvändigt att använda flera globala pekarvärden för att kunna adressera alla möjliga konstanter. Det här alternativet får en varning att utfärdas när det här fallet uppstår. --warn-gång Varna endast en gång för varje odefinierad symbol, snarare än en gång per modul som refererar till den. --warn sektion-align Varna om adressen på en utmatningssektion ändras på grund av justering. Vanligtvis ställs inriktningen in av en ingångssektion. Adressen ändras endast om den inte uttryckligen anges det vill säga om kommandot "SECTIONS" inte anger en startadress för sektionen. --whole-arkiv För varje arkiv som nämns på kommandoraden efter--whole-arkiv alternativ, inkludera varje objektfil i arkivet i länken, istället för att söka i arkivet för de obligatoriska objektfilerna. Det brukar användas för att göra en arkivfil till ett delat bibliotek, vilket tvingar varje objekt att inkluderas i det resulterande delade biblioteket. Det här alternativet kan användas mer än en gång. Två anteckningar när du använder det här alternativet från gcc: För det första vet inte gcc om det här alternativet, så du måste använda-Wl, i profil-arkiv. För det andra glöm inte att använda-Wl, -no-hela-arkivefter din lista över arkiv, eftersom gcc kommer att lägga till en egen lista med arkiv till din länk och du kanske inte vill att den här flaggan påverkar dem också. --slå in symbol Använd en omslagsfunktion för symbol . Eventuell odefinierad referens till symbol kommer att lösas till "__ wrap_symbol". Eventuell odefinierad referens till "__real_symbol" kommer att lösas till symbol . Detta kan användas för att tillhandahålla en omslag för en systemfunktion. Omslagsfunktionen ska kallas "__wrap_symbol". Om den vill ringa till systemfunktionen ska den kalla "__ real_symbol". Här är ett triviellt exempel: void * __wrap_malloc (int c) {printf ("malloc kallas med% ld n", c); returnera __real_malloc (c); }Om du länkar andra kod med den här filen med- wrap malloc, då kommer alla samtal till "malloc" att ringa funktionen "__wrap_malloc" istället. Samtalet till "__real_malloc" i "__wrap_malloc" kommer att kalla den ve