LD-linux (8) - Linux man bladsy Naam ld. so, ld-linux. so - dinamiese linkerkant / loader Oorsig Die dinamiese linkerkant kan uitgevoer word óf indirek deur die loop sommige dinamiese gekoppel program of biblioteek (in welke geval geen opdrag-lyn opsies om die dinamiese linkerkant kan oorgedra word en, in die ELF geval, is die dinamiese linkerkant wat gestoor word in die. interp deel van die program uitgevoer word) of direk deur die loop: /lib/ld-linux. so. OPTIONS PROGRAM ARGUMENTE Beskrywing Die programme ld. so en ld-linux. so vind en laai die gedeelde biblioteke wat nodig is deur 'n program, berei die program uit te voer, en dan loop dit. Linux binaries vereis dinamiese koppeling (koppeling te hardloop tyd) tensy die - static opsie tydens samestelling te ld (1) gegee is. Die program ld. so a. out binaries hanteer, 'n formaat wat gebruik word lankal ld-linux. so hanteer ELF (/lib/ld-linux. so.1 vir libc5, /lib/ld-linux. so.2 vir glibc2) , wat almal het al met behulp van jare nou. Anders albei dieselfde gedrag, en gebruik dieselfde ondersteuning lêers en programme LDD (1), ldconfig (8) en /etc/ld. so. conf. Wanneer die oplossing biblioteek afhanklikhede, die dinamiese linkerkant inspekteer eerste elk afhanklikheid string om te sien of dit 'n streep bevat (dit kan optree as 'n biblioteek padnaam met houe op skakel tyd gespesifiseer). As 'n streep is nie, moet die afhanklikheid string geïnterpreteer as 'n (relatief of absoluut) padnaam, en die biblioteek is gelaai met behulp van die padnaam. As 'n biblioteek afhanklikheid n streep bevat nie, dan is dit gesoek in die volgende volgorde: o (ELF net) Met behulp van die wat in die DTRPATH dinamiese artikel kenmerk van die binêre indien teenwoordig en DTRUNPATH kenmerk bestaan nie dopgehou. Gebruik van DTRPATH is afgekeur. Die gebruik van die omgewing veranderlike LDLIBRARYPATH. Behalwe as die uitvoerbare is 'n set-gebruiker-ID / set-groep-ID binêre, in welke geval dit is geïgnoreer. (Slegs ELF) Die gebruik van die tydperk in die DTRUNPATH dinamiese artikel kenmerk van die binêre indien teenwoordig dopgehou. Uit die kas lêer /etc/ld. so. cache. wat bevat 'n saamgestelde lys van kandidaat biblioteke voorheen gevind in die volgemaak biblioteek pad. As jy egter die binêre is gekoppel aan die - z nodeflib linkerkant opsie, is biblioteke in die standaard biblioteek paaie oorgeslaan. Biblioteke in hardeware vermoë dopgehou (sien onder) geïnstalleer word verkies tot ander biblioteke. In die standaard pad / lib. en dan / usr / lib. As die binêre is gekoppel aan die - z nodeflib linkerkant opsie, is hierdie stap oorgeslaan. Oorsprong en rpath ld. so verstaan die string oorsprong (of anders gestel) in 'n rpath spesifikasie (DTRPATH of DTRUNPATH) na die gids wat die aansoek uitvoerbare beteken. Dus, kan 'n aansoek in somedir / app saamgestel met gcc - Wl, - rpath, oorsprong /../ lib sodat dit 'n verband gedeelde biblioteek in somedir / lib vind maak nie saak waar somedir is geleë in die gids hiërargie. Dit fasiliteer die skepping van turn-key programme wat hoef nie in spesiale dopgehou word geïnstalleer, maar kan eerder uitgepak in 'n gids en nog steeds hul eie gedeel biblioteke. Opsies Wys alle afhanklikhede en hoe dit opgelos is. --verify Maak seker dat die program is dinamies gekoppel en hierdie dinamiese linkerkant kan dit hanteer. --library-pad PATH Gebruik PATH plaas van LDLIBRARYPATH omgewing veranderlike omgewing (sien onder). --inhibit-rpath ignoreer lys RPATH en RUNPATH inligting voorwerp name in Lys. Hierdie opsie is geïgnoreer as ld. so gestel gebruiker-ID of set-groep-ID. --audit genoem in lys ouditeure LYS Gebruik voorwerpe. Hardware vermoëns Sommige biblioteke saamgestel met behulp van hardeware-spesifieke instruksies wat nie bestaan nie op elke CPU. Sulke biblioteke moet in dopgehou wie se name definieer die vereiste hardeware vermoëns, soos / usr / lib / SSE2 / geïnstalleer. Die dinamiese linkerkant tjeks hierdie gidse teen die hardeware van die rekenaar en kies die mees geskikte weergawe van 'n gegewe biblioteek. Hardware vermoë dopgehou kan word kaskade om CPU funksies te kombineer. Die lys van ondersteunde hardeware vermoë name hang af van die CPU. Die volgende name word tans erken: Alpha ev4, EV5-, ev56, EV6, ev67 loongson2e, loongson2f, octeon, octeon2 PowerPC 4xxmac, altivec, arch205, arch206, vakantiewoningen, cellbe, DFP, efpdouble, efpsingle, FPU, icsnoop, MMU, notb , pa6t, Power4, POWER5, POWER5, power6x, ppc32, ppc601, ppc64, SBS, spe, ucache, VSX SPARC spoel, muldiv, stbar, ruil, ultra3, v9, v9v, v9v2 DFP, eimm, esan3, etf3enh, G5, highgprs, hpage, ldisp, SSA, stfle, z900, z990, z9-109, z10, zarch x86 (32-bit net) ACPI, APIC, clflush, cmov, cx8, DTS, fxsr, ht, i386, i486, i586, i686, MCA, MMX, mtrr, klop, PBE, PGE, PK, pse36, September, SS, SSE, SSE2, TM omgewing Daar is vier belangrike omgewing veranderlikes. LDBINDNOW (libc5 glibc sedert 2.1.1) As stel na 'n-leeg string, veroorsaak dat die dinamiese linkerkant om al simbole op program begin op te los in plaas van uitstel funksie oproep resolusie om die punt wanneer hulle die eerste keer is verwys. Dit is sinvol as die gebruik van 'n debugger. LDLIBRARYPATH A-kolon geskeide lys van gidse waarin om te soek na ELF biblioteke by uitvoering-time. Soortgelyk aan die PATH omgewing. Geïgnoreer in set-gebruiker-ID en set-groep-ID's. LDPRELOAD n lys van bykomende, gebruiker-gespesifiseerde, ELF gedeel biblioteke voor al die ander gelaai word. Die items van die lys kan geskei deur spasies of dubbelpunte. Dit kan gebruik word om selektief ignoreer funksies in ander gedeel biblioteke. Die biblioteke soek na die gebruik van die reëls gegee onder BESKRYWING. Vir set-gebruiker-ID / set-groep-ID ELF binaries, is voorbelading padnamen met houe geïgnoreer, en biblioteke in die standaard soektog dopgehou gelaai slegs indien die set-gebruiker-ID toestemming bietjie geaktiveer op die biblioteek lêer. LDTRACELOADEDOBJECTS (ELF net) As stel na 'n-leeg string, veroorsaak dat die program om 'n lys van sy dinamiese biblioteek afhanklikhede, asof loop deur LDD (1), in plaas van wat normaalweg loop. Dan is daar baie min of meer duistere veranderlikes, baie verouderd of net vir interne gebruik. LDAOUTLIBRARYPATH (libc5) weergawe van LDLIBRARYPATH slegs a. out binaries. Ou weergawes van LD-linux. so.1 ondersteun ook LDELFLIBRARYPATH. LDAOUTPRELOAD (libc5) weergawe van LDPRELOAD slegs a. out binaries. Ou weergawes van LD-linux. so.1 ook ondersteun LDELFPRELOAD. LDAUDIT (glibc sedert 2.4) A-kolon geskeide lys van gebruiker-gespesifiseerde, ELF gedeel voorwerpe te laai voor al die ander in 'n aparte linkerkant naamruimte (dit wil sê een wat nie inbreuk maak op die normale simbool bindings wat sal plaasvind in die proses). Hierdie biblioteke kan gebruik word om die werking van die dinamiese linkerkant oudit. LDAUDIT geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. Die dinamiese linkerkant sal die oudit biblioteke in kennis stel by sogenaamde ouditering besoekpunte-byvoorbeeld, laai 'n nuwe biblioteek, die oplossing van 'n simbool, of bel 'n simbool van 'n ander gedeel voorwerp-deur te bel 'n toepaslike funksie binne die oudit biblioteek. Vir meer besonderhede, sien rtld-oudit (7). Die oudit-koppelvlak is grootliks versoenbaar is met dié wat op Solaris, soos beskryf in sy Linker en biblioteke Guide. in die hoofstuk Runtime Linker Oudit Interface. LDBINDNOT (glibc sedert 2.1.95) Moenie die GOT (globale geneutraliseer tafel) en PLT (prosedure koppeling tafel) nie werk na die oplossing van 'n simbool. LDDEBUG (glibc sedert 2.1) Uitgawe verbose ontfouting inligting oor die dinamiese linkerkant. As stel na alle afdrukke al ontfouting inligting dit as stel om afdrukke help om 'n hulp boodskap oor watter kategorieë in hierdie omgewing veranderlike kan gespesifiseer word. Sedert glibc 2.3.4, is LDDEBUG geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. LDDEBUGOUTPUT (glibc sedert 2.1) File waar LDDEBUG uitset moet gevoer word in, verstek is standaard uitset. LDDEBUGOUTPUT geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. LDDYNAMICWEAK (glibc sedert 2.1.91) Laat swak simbole te oorheers (terug te keer na die ou glibc gedrag). Vir sekuriteitsredes, aangesien glibc 2.3.4, LDDYNAMICWEAK geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. LDHWCAPMASK (glibc sedert 2.1) masker vir hardeware vermoëns. LDKEEPDIR (a. out net) (libc5) Moenie ignoreer die gids in die name van a. out biblioteke te laai. Gebruik van hierdie opsie is ten sterkste ontmoedig. LDNOWARN (a. out net) (libc5) Onderdruk waarskuwings oor a. out biblioteke met onversoenbare klein weergawe nommers. LDORIGINPATH (glibc sedert 2.1) Pad waar die binêre gevind (vir nie-set-gebruiker-ID's). Vir sekuriteitsredes, aangesien glibc 2.4, LDORIGINPATH geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. LDPOINTERGUARD (glibc sedert 2.4) Stel na 0 om wyser bewaking uit te skakel. Enige ander waarde in staat stel om wyser bewaking, wat ook die standaard. Wyser bewaking is 'n sekuriteit meganisme waardeur 'n paar wenke om kode gestoor in skryfbare program geheue (terugkeer adresse gered deur setjmp (3) of funksie wysers gebruik word deur verskeie glibc internals) is verminkte semi-lukraak te maak dit moeiliker vir 'n aanvaller die kaap wenke vir die gebruik in die geval van 'n buffer oorrompel of stapel-breek aanval. LDPROFILE (glibc sedert 2.1) Gedeelde voorwerp wat geprofileerde, vermeld óf as 'n padnaam of 'n soname. Profilering uitset is geskryf om die lêer met die naam is: LDPROFILEOUTPUT / LDPROFILE. profile. LDPROFILEOUTPUT (glibc sedert 2.1) Gids waar LDPROFILE uitset moet geskryf word. As hierdie veranderlike nie gedefinieer, of word gedefinieer as 'n leë string, dan is die verstek is / var / tmp. LDPROFILEOUTPUT geïgnoreer vir set-gebruiker-ID en set-groep-ID's, wat altyd gebruik / var / profiel. LDSHOWAUXV (glibc sedert 2.1) Wys hulp verskeidenheid geslaag om uit die kern. Vir sekuriteitsredes, aangesien glibc 2.3.5, LDSHOWAUXV geïgnoreer vir set-gebruiker-ID / set-groep-ID binaries. LDUSELOADBIAS By verstek (bv as hierdie veranderlike nie gedefinieer) executables en prelinked gedeel voorwerpe sal eer basis adresse van hul afhanklike biblioteke en (nonprelinked) posisie-onafhanklike executables (pasteie) en ander gedeel voorwerpe sal hulle nie vereer. As LDUSELOADBIAS die waarde, word gedefinieer wit beide executables en pasteie sal eer die basis adresse. As LDUSELOADBIAS gedefinieer met die waarde 0 is, sal nie executables of pasteie eer die basis adresse. Hierdie veranderlike word geïgnoreer deur set-gebruiker-ID en set-groep-ID's. LDVERBOSE (glibc sedert 2.1) As stel na 'n-leeg string, uitset simbool weergawes inligting oor die program as LDTRACELOADEDOBJECTS veranderlike is ingestel. LDWARN (ELF net) (glibc sedert 2.1.3) As stel na 'n-leeg string, waarsku oor onopgeloste simbole. LDDARGV0 (libc5) argv 0 om gebruik te word deur LDD (1) wanneer niemand teenwoordig is. Lêers /lib/ld. so a. out dinamiese linkerkant / loader /lib/ld-linux. so. 1, 2 ELF dinamiese linkerkant / loader /etc/ld. so. cache lêer met 'n saamgestelde lys van gidse waarin om te soek na biblioteke en 'n geordende lys van kandidaat biblioteke. /etc/ld. so. preload lêer met 'n spasie geskei lys van ELF gedeel biblioteke te laai voordat die program. lib. so gedeel biblioteke Notes Die ld. so funksie is beskikbaar vir executables saamgestel met behulp van LIBC weergawe 4.4.3 of groter. ELF funksionaliteit is beskikbaar sedert Linux 1.1.52 en libc5. Sien AlsoDoes iemand 'n idee hoe om enige hulpbron lêer staties stel regs in die uitvoerbare of die gedeelde biblioteek lêer met GCC Byvoorbeeld id graag voeg beeld-lêers wat nooit verander nie (en as hulle dit doen, Id moet die lêer in elk geval vervang) en wouldnt wil hê hulle moet rondlê in die lêerstelsel. As dit moontlik is (en ek dink dit is omdat Visual C vir Windows dit ook kan doen,), hoe kan ek laai die lêers wat in die eie binêre gestoor Maak die uitvoerbare parse self, vind die lêer en die data te onttrek uit dit Miskien Theres 'n opsie vir GCC ek nog havent gesien. Die gebruik van soekenjins didnt regtig spoeg uit die regte dinge. Ek sou dit graag werk vir gedeelde biblioteke en normale ELF-executables. Enige hulp sal waardeer word Gee iets soos: Vir verenigbaarheid met ander kode wat jy kan dan gebruik óf fmemopen om 'n gewone lêer voorwerp te kry, of alternatiewelik st :: stringstream 'n iostream maak. st :: stringstream is nie 'n groot vir hierdie al en jy kan natuurlik net gebruik om 'n wyser waar jy kan 'n iterator gebruik. As jy hierdie met behulp van auto Moenie vergeet om BUILTSOURCES gepas stel. Die nice ding oor om dit te doen op hierdie manier is: Jy uitkry teks, sodat dit kan wees in weergawe beheer en kolle sinvol Dit is draagbaar en goed gedefinieerde op elke platform geantwoord 1 Februarie 11 van die 16:04 Ek gebruik objcopy (GNU binutils) om die binêre data skakel vanaf 'n lêer cat-data. bin in die artikel data van die uitvoerbare: Dit gee jou 'n cat-data. o voorwerp lêer wat jy kan skakel na jou uitvoerbare. Die C-koppelvlak lyk iets soos, sodat jy kan dinge doen soos As jou teiken argitektuur het 'n spesiale beperkings met betrekking tot waar konstante en veranderlike data gestoor word, of jy wil hê dat die data in die. text segment stoor om dit te laat inpas in dieselfde geheue tipe as jou program kode, kan jy speel met die objcopy parameters 'n paar meer. antwoord 1 Februarie 11 van die 16:36 goeie idee In my geval it39s nie baie nuttig. Maar dit is iets wat I39m regtig in my brokkie-versameling gaan sit. Dankie vir die deel van hierdie uitvoering maak Atmocreations 1 Februarie 11 by 18:04 It39s 'n bietjie makliker te ld gebruik as die uitvoer formaat daar geïmpliseer, sien StackOverflow / a / 4158997/201725. uitvoering Jan Hudec 11 Maart 14 by 18:40 Jy kan binêre lêers insluit in uitvoerbare behulp ld linkerkant. Byvoorbeeld, as jy 'n lêer foo. bar dan kan jy dit in te sluit in uitvoerbare toevoeging van die volgende opdragte aan LD As jy aanroep ld deur middel van gcc dan sal jy nodig het om te - Wl voeg Hier vertel --formatbinary die linkerkant wat die volgende lêer binêre en --formatdefault skakel terug na insette formaat standaard (dit is nuttig as jy ander invoer lêers na foo. bar sal spesifiseer). Dan kan jy toegang tot die inhoud van jou lêer van kode: Daar is ook 'n simbool genoem binaryfoobarsize. Ek dink dit is van tipe uintptrt maar ek didnt dit na te gaan. Ek het onlangs die behoefte om 'n lêer te sluit in 'n uitvoerbare. Sedert Im werk by die command line met gcc, et al en nie met 'n spoggerige RAD hulpmiddel wat maak dit al mettertyd gebeur dit wasnt onmiddellik voor die hand liggend vir my hoe om te maak dit gebeur. 'N bietjie van 'n soektog op die net gevind dat 'n hack om wese kat dit op die einde van die uitvoerbare en dan ontsyfer waar dit gebaseer is op 'n klomp van die inligting wat ek didnt wil weet oor. Gelyk asof daar behoort 'n beter manier wees. En daar is, sy objcopy tot die redding. objcopy bekeerlinge beswaar lêers of executables van een formaat na 'n ander. Een van die formate dit verstaan is binêre, wat is basies 'n lêer dis nie in een van die ander formate wat dit verstaan. So jy het waarskynlik in die vooruitsig gestel die idee: omskep die lêer wat ons wil in te sluit in 'n voorwerp lêer, dan is dit kan net gekoppel aan met die res van ons kode. Kom ons sê ons het 'n lêernaam DATA. TXT wat ons wil in te sluit in ons uitvoerbare: Om hierdie te omskep in 'n voorwerp lêer dat ons kan 'n skakel met ons program gebruik ons net objcopy 'n. o lêer te produseer: Dit sê vir objcopy dat ons insette lêer is in die binêre formaat, wat ons uitvoer lêer moet wees in die elf32-i386 formaat (beswaar lêers op die x86). Die --binary-argitektuur opsie vertel objcopy dat die uitvoer lêer is bedoel om uit te voer op 'n x86. Dit is nodig sodat ld die lêer sal aanvaar vir skakeling met ander lêers vir die x86. Mens sou dink dat die spesifiseer van die uitvoer formaat soos elf32-i386 dit sou impliseer, maar dit beteken nie. Nou dat ons 'n voorwerp lêer moet ons net om dit te sluit wanneer ons die linkerkant loop: Wanneer ons die resultaat hardloop kry ons die bid vir uitvoer: Natuurlik, havent Ek het die hele storie nog nie gewys jy main. c. Wanneer objcopy doen die bogenoemde omskakeling voeg dit 'n paar linkerkant simbole om die bekeerde voorwerp lêer: Na 'n skakel, hierdie simbole spesifiseer die begin en einde van die ingeboude lêer. Die simbool name gevorm deur prepending binêre en die aanbring van begin of einde van die lêernaam. As die lêernaam bevat enige karakters wat ongeldig in 'n simbool naam hulle tot bekering te onderstreping sou wees (bv DATA. TXT word datatxt). As jy onopgeloste name kry wanneer die koppeling van die gebruik van hierdie simbole, doen 'n hexdump - C op die voorwerp lêer en kyk na die einde van die stortingsterrein vir die name wat objcopy gekies. Die kode om die ingeboude lêer eintlik gebruik moet nou redelik voor die hand liggend: Een van die belangrike en subtiele ding om daarop te let is dat die by die voorwerp lêer simbole Arent veranderlikes. Hulle hoef geen data bevat, eerder, hul adres is hul waarde. Ek verklaar hulle as tipe char want sy gerieflik vir hierdie voorbeeld: die ingeboude data is karakter data. Maar, kan jy dit verklaar as iets soos int indien die data is 'n verskeidenheid van heelgetalle, of as struct foobart indien die data was geen verskeidenheid van cat bars. As die ingeboude data is nie uniform, dan is char waarskynlik die mees geskikte: neem die adres en gooi die wyser na die behoorlike soort as jy die data deurkruis. antwoord 1 April 11 van die 20: 39The GNU linkerkant ld is bedoel om 'n wye verskeidenheid van situasies te dek, en as versoenbaar as moontlik met ander linkers te wees. As gevolg hiervan, jy het baie keuses om sy gedrag te beheer. Hier is 'n opsomming van die opsies wat jy kan gebruik op die ld command line: Dit oorvloed van command-line opsies kan intimiderend lyk, maar in die praktyk n paar van hulle is wat gebruik word in 'n bepaalde konteks. Byvoorbeeld, 'n gereelde gebruik van ld is om te skakel standaard Unix voorwerp lêers op 'n standaard, ondersteun Unix stelsel. Op so 'n stelsel, 'n lêer hello. o skakel. Dit sê vir ld 'n lêer met die naam uitset te produseer as gevolg van die koppeling van die lêer /lib/crt0.o met hello. o en die biblioteek libc. a. wat sal kom uit die standaard soektog dopgehou. (Sien die bespreking van die l opsie hieronder.) Die opdrag-lyn opsies om ld vermeld word in enige volgorde, en kan te herhaal sal word. Herhaling meeste opsies met 'n ander argument sal óf het geen verdere effek, of ignoreer voor voorkomste (diegene verder na links op die command line) van daardie opsie. Die uitsonderings - wat sinvol meer as een keer gebruik kan word - is - A. - B (of sy sinoniem - format), - defsym. - L. l. - R. - U. en -.. ((of sy sinoniem --start-groep) Die lys van voorwerp lêers om saam gekoppel word, getoon as objfile kan volg, voorafgaan, of gemeng met command-line opsies, behalwe dat 'n objfile argument kan nie geplaas word tussen 'n opsie en sy argument. Gewoonlik die linkerkant is opgeroep met ten minste een voorwerp lêer, maar jy kan ander vorme van binêre invoer lêers spesifiseer met behulp van l. - R. en die script command taal. Indien geen binêre invoer lêers op al is vermeld, die linkerkant geen uitset te produseer, en kwessies die boodskap geen insette lêers. As die linkerkant van die formaat van 'n voorwerp lêer nie kan herken nie, sal dit aanvaar dat dit 'n linker script. a skrip soos gespesifiseer in hierdie manier augments die belangrikste linkerkant script wat gebruik word vir die skakel (hetsy die verstek linkerkant script of die een wat deur die gebruik van - T). Hierdie funksie laat die linkerkant om te skakel teen 'n lêer wat blyk te wees 'n voorwerp of 'n argief te wees nie, maar eintlik definieer bloot 'n simbool waardes, of gebruik insette of GROEP om ander voorwerpe te laai. Sien artikel Command taal. Vir opsies wie se name 'n enkele brief, moet opsie argumente óf die opsie brief volg sonder gryp witspasie, of gegee word as afsonderlike argumente wat onmiddellik volg op die keuse wat hulle nodig het. Vir opsies wie se name verskeie briewe, óf een streep of twee kan die opsie naam byvoorbeeld voorafgaan, --oformat en - oformat is ekwivalent. Argumente om meervoudige brief opsies moet óf geskei word van die naam opsie deur 'n gelyk teken, of gegee word as afsonderlike argumente wat onmiddellik volg op die keuse wat hulle nodig het. Byvoorbeeld, --oformat SNEK en --oformatsrec is ekwivalent. Unieke afkortings van die name van verskeie letters opsies word aanvaar. - b insette-formaat ld kan ingestel word om meer as een soort voorwerp lêer te ondersteun. As jou ld hierdie manier is ingestel, kan jy gebruik maak van die - b opsie om die binêre formaat vir insette voorwerp lêers wat hierdie opsie op die command line volg spesifiseer. Selfs wanneer ld is ingestel om alternatiewe voorwerp formate ondersteun, hoef jy gewoonlik nodig om hierdie spesifiseer, soos ld moet ingestel word om te verwag as 'n standaard insette formaat die mees algemene formaat op elke masjien. insette-formaat is 'n teks string, die naam van 'n bepaalde formaat ondersteun deur die BFD biblioteke. (Jy kan 'n lys van die beskikbare binêre formaat met objdump - i.) - format Insette-formaat het dieselfde effek, net soos die script command teiken. Sien artikel BFD. Wil jy dalk na gebruik hierdie opsie as jy 'n skakel lêers met 'n ongewone binêre formaat. Jy kan ook gebruik - b te formate uitdruklik skakel (wanneer 'n skakel voorwerp lêers van verskillende formate), deur die insluiting van - b insette-formaat voor elke groep voorwerp lêers in 'n bepaalde formaat. Die standaard formaat is geneem uit die omgewing veranderlike GNUTARGET. Jy kan ook die insette formaat definieer van 'n script, met behulp van die opdrag TEIKEN Sien artikel Opsie opdragte. - Bstatic Moenie skakel teen gedeel biblioteke. Dit is slegs betekenisvol op platforms waarvoor gedeel biblioteke ondersteun. - Bdynamic Link teen dinamiese biblioteke. Dit is slegs betekenisvol op platforms waarvoor gedeel biblioteke ondersteun. Hierdie opsie is gewoonlik die standaard op sulke platforms. - Bsymbolic Wanneer die skep van 'n gedeelde biblioteek, bind verwysings na globale simbole om die definisie in die gedeelde biblioteek, indien enige. Gewoonlik is dit moontlik vir 'n program gekoppel teen 'n gedeelde biblioteek om die definisie in die gedeelde biblioteek ignoreer. Hierdie opsie is slegs betekenisvol op ELF platforms wat gedeel biblioteke ondersteun. - c MRI-commandfile Vir verenigbaarheid met linkers deur MRI, ld aanvaar script lêers wat geskryf is in 'n alternatiewe, beperk bevel taal, in artikel MRI Versoenbaar script lêers beskryf. Stel MRI script lêers met die opsie-c gebruik die - T opsie om linkerkant skrifte geskryf in die algemene doel ld script taal te hardloop. As MRI-cmdfile bestaan nie, ld lyk vir dit in die gespesifiseerde deur enige - L opsies dopgehou. d - dc - dp Hierdie drie opsies is gelykstaande veelvuldige vorme word ondersteun vir verenigbaarheid met ander linkers. Hulle wys ruimte om gemeenskaplike simbole, selfs as 'n skuif aanvaarde uitvoer lêer is verskaf (met r). Die script command FORCECOMMONALLOCATION het dieselfde effek. Sien artikel Opsie opdragte. - defsym simbool uitdrukking te skep 'n globale simbool in die uitvoer lêer, wat die absolute adres gegee deur uitdrukking. Jy kan hierdie opsie gebruik soveel keer as wat nodig is om verskeie simbole in die command line definieer. 'N Beperkte vorm van rekenkundige ondersteun die uitdrukking in hierdie konteks: jy kan 'n heksadesimale konstante of die naam van 'n bestaande simbool gee, of gebruik en - om by te voeg of af te trek heksadesimale konstantes of simbole. As jy meer ingewikkelde uitdrukkings nodig het, oorweeg die gebruik van die linker opdrag taal van 'n script (sien afdeling Opdrag: Definiëring van simbole). Let wel: daar moet geen wit spasie tussen simbool wees. die gelykaanteken (), en uitdrukking. - embedded-relocs Hierdie opsie is slegs betekenisvol wanneer die koppeling van MIPS ingesluit PIC-kode, wat deur die - membedded-pic opsie om die GNU samesteller en samesteller. Dit veroorsaak dat die linkerkant om 'n tafel wat tydens looptyd kan gebruik word om te hervestig enige data wat staties is geïnisialiseer om wyser waardes te skep. Sien die kode in testsuite / LD-empic vir meer inligting. - e inskrywing Gebruik inskrywing as die eksplisiete simbool vir die begin uitvoering van jou program, eerder as die verstek beginpunt. Sien artikel die ingang. vir 'n bespreking van standaard en ander maniere te spesifiseer die beginpunt. - F - F Formaat geïgnoreer. Sommige ouer linkers gebruik hierdie opsie regdeur 'n samestelling tool chain vir die spesifiseer voorwerp-lêer formaat vir beide toevoer en afvoer voorwerp lêers. Die meganismes ld gebruik vir hierdie doel (die - b of - format opsies vir invoer lêers, - oformat opsie of die teiken opdrag in linker skrifte vir uitvoer lêers, die GNUTARGET omgewing veranderlike) is meer buigsaam, maar ld aanvaar die - F opsie vir verenigbaarheid met skrifte geskryf om die ou linkerkant noem. - format insette-formaat sinoniem vir - b insette-formaat. G geïgnoreer. Voorsiening gemaak verenigbaarheid met ander instrumente. G waarde G waarde Stel die maksimum grootte van voorwerpe word new behulp van die GP registreer grootte onder MIPS ECOFF. Geïgnoreer vir ander lêer voorwerp formate. Hulp-Druk 'n opsomming van die opdrag-lyn opsies op die standaard uitset en uitgang. - i Voer 'n inkrementele skakel (dieselfde as opsie r). l Die ar Voeg argief argief om die lys van lêers om te skakel. Hierdie opsie kan enige aantal kere gebruik. ld sal sy pad-lys vir voorvalle van lib ar Een voorsien vol soek vir elke argief verskaf. - L Searchdir - L searchdir Voeg pad searchdir om die lys van paaie wat ld sal soek argief biblioteke en ld beheer skrifte. Jy kan hierdie opsie gebruik enige aantal kere. Die dopgehou word gesoek in die volgorde waarin hulle is nie op die command line. Gidse wat op die command line is deursoek voordat die standaard dopgehou. Alle - L opsies van toepassing op alle - l opsies, ongeag die volgorde waarin die opsies verskyn. Die paaie kan ook gespesifiseer word in 'n skakel script met die SEARCHDIR opdrag. Gidse gespesifiseerde hierdie manier word gesoek by die punt waar die linkerkant script verskyn in die command line. - M Print (om die standaard uitset) 'n skakel kaart - diagnostiese inligting oor waar simbole gekarteer deur ld. en inligting oor globale toekenning algemene stoor. - Map Mapfile Druk om die lêer mapfile 'n skakel kaart - diagnostiese inligting oor waar simbole gekarteer deur ld. en inligting oor globale toekenning algemene stoor. - m nydigheid-m nydigheid Emulate die nydigheid linkerkant. Jy kan 'n lys van die beskikbare jaloersheid met die --verbose of - V opsies. Die verstek hang af van hoe jou ld is ingestel. - n Stel die teks en data afdelings leesbare en skryfbaar wees. Moet ook nie bladsy-align die data segment. As die uitset formaat ondersteun Unix-styl magic nommers, merk die uitset as OMAGIC. - n Stel die teks segment net om te lees, en merk die uitset as NMAGIC indien moontlik. - noinhibit-exec Behou die uitvoerbare uitvoer lêer wanneer dit is nog bruikbaar. Normaalweg sal die linkerkant nie 'n uitset lêer te produseer as dit foute teëkom tydens die skakel proses dit uitgaan sonder skryf 'n uitset lêer wanneer dit 'n fout kwessies hoegenaamd nie. - Geen-hou-geheue ld gewoonlik optimaliseer vir spoed oor geheue gebruik deur die kas die simbool tafels van invoer lêers in die geheue. Hierdie opsie sê vir ld te plaas optimaliseer vir geheue gebruik, deur herlees die simbool tafels wat nodig is. Dit mag nodig wees indien ld loop uit van die geheue spasie, terwyl 'n skakel 'n groot uitvoerbare. o uitset Gebruik uitset as die naam vir die wat deur ld As hierdie opsie nie word vermeld program, is die naam a. out by verstek gebruik word. Die script command uitset kan ook die naam uitset lêer spesifiseer. - oformat uitset-formaat ld kan ingestel word om meer as een soort voorwerp lêer te ondersteun. As jou ld hierdie manier is ingestel, kan jy gebruik maak van die - oformat opsie om die binêre formaat vir die uitset voorwerp lêer spesifiseer. Selfs wanneer ld is ingestel om alternatiewe voorwerp formate ondersteun, hoef jy gewoonlik nodig om hierdie spesifiseer, soos ld moet ingestel word om te produseer as 'n standaard uitvoer formaat die mees algemene formaat op elke masjien. uitset-formaat is 'n teks string, die naam van 'n bepaalde formaat ondersteun deur die BFD biblioteke. (Jy kan 'n lys van die beskikbare binêre formaat met objdump - i.) Die script command OUTPUTFORMAT kan ook die uitvoer formaat spesifiseer, maar hierdie opsie oorheers nie. Sien artikel BFD. - R Lêernaam Lees simbool name en hul adresse van lêernaam. maar moenie verskuif dit of sluit dit in die uitset. Dit laat jou uitvoer lêer te simbolies verwys na absolute plekke van herinnering omskryf in ander programme. - relax 'n opsie met masjien afhanklik effekte. Op sommige platforms, die - relax opsie voer globale optimalisaties wat moontlik word wanneer die linkerkant besluit aanspreek in die program, soos ontspannende adres modes en sintetisering nuwe instruksies in die uitset voorwerp lêer. - retain-simbole-lêer lêernaam Behou net die in die lêer lêernaam gelys simbole. wegdoen al die ander. lêernaam is bloot 'n plat lêer, met een simbool naam per reël. Hierdie opsie is veral nuttig in 'n omgewing waar 'n groot globale simbool tafel geleidelik opgebou word, te run-time geheue te bewaar. - retain-simbole-lêer nie ongedefinieerde simbole, of simbole wat nodig is vir verskuiwings weggooi. Jy mag slegs spesifiseer - retain-simbole-lêer keer in die command line. Dit oorheers s en - S. r genereer skuif aanvaarde uitset - d. w.z. genereer 'n uitset lêer wat op sy beurt as insette tot ld kan dien. Dit is dikwels genoem gedeeltelike koppeling. As 'n newe-effek, in 'n omgewing wat standaard Unix magic nommers ondersteun, hierdie opsie stel ook die uitvoer lêers magie nommer OMAGIC. As hierdie opsie nie word vermeld, is 'n absolute lêer geproduseer. Wanneer 'n skakel C programme, sal hierdie opsie nie verwysings na vervaardigerskampioenskap om dit te doen oplos met behulp van - Ur. Hierdie opsie nie dieselfde ding as - i. - S Laat weg debugger simbool inligting (maar nie almal simbole) van die uitvoer lêer. s Laat al simbool inligting van die uitvoer lêer. - shared Skep 'n gedeelde biblioteek. Dit is tans slegs ondersteun op ELF en SunOS platforms. Op SunOS, sal die linkerkant outomaties 'n gedeelde biblioteek te skep as die - e opsie nie gebruik word nie en daar is nie gedefinieer simbole in die skakel. Sorteer-algemene Normaalweg wanneer ld plaas die globale gemeenskaplike simbole in die geskikte afvoer afdelings, dit sorteer hulle deur die grootte. kom eerste al die een byte simbole, dan sal al die twee grepe, dan sal al die vier grepe, en dan is alles anders. Dit is om te verhoed dat gapings tussen simbole weens belyning beperkings. Hierdie opsie versper dat sorteer. - split-vir-reloc telling trys om ekstra afdelings skep in die uitvoer lêer, sodat daar geen enkele uitset artikel in die lêer meer as reken verskuiwings bevat. Dit is sinvol as die opwekking van groot skuif aanvaarde vir aflaai in sekere real time pitte met die COFF voorwerp lêer formaat sedert COFF kan nie meer as 65.535 verskuiwings verteenwoordig in 'n enkele artikel. Let daarop dat dit sal nie werk met lêer voorwerp formaat wat nie ondersteun arbitrêre afdelings. Die linkerkant sal nie verdeel individuele insette afdelings vir herverdeling, so as 'n enkele insette afdeling bevat meer as telling verskuiwings een uitset artikel dat baie verskuiwings sal bevat. - split-vir-lêer Soortgelyk aan - split-vir-reloc maar skep 'n nuwe produksie afdeling vir elke insette lêer. - stats Bereken en vertoon statistieke oor die werking van die linkerkant, soos uitvoering tyd en geheue gebruik. - Tbss Org - Tdata org - Ttext org Gebruik org as die begin-posadres vir - onderskeidelik - die BSS. data. of die teks segment van die uitvoer lêer. org moet 'n enkele heksadesimale heelgetal vir verenigbaarheid met ander linkers wees, kan jy die voorste 0x gewoonlik geassosieer word met heksadesimale waardes laat. - T Commandfile - T commandfile Lees skakel bevele van die lêer commandfile. Hierdie opdragte vervang ld se verstek skakel script (eerder as dit uit te brei), sodat commandfile moet alles wat nodig is te gee om die teiken formaat beskryf. Sien artikel Command taal. As commandfile bestaan nie, ld lyk vir dit in die gespesifiseerde deur enige voorafgaande - L opsies dopgehou. Veelvuldige - T opsies ophoop. t Druk die name van die invoer lêers as ld hulle prosesse. - Traditional-formaat Vir sommige teikens, die opbrengs van ld is anders in 'n paar maniere uit die opbrengs van 'n bestaande linkerkant. Dit skakel versoeke ld tot die tradisionele formaat plaas gebruik. Byvoorbeeld, op SunOS, ld kombineer duplikaat inskrywings in die simbool string tafel. Dit kan die grootte van 'n uitset lêer met volle ontfouting inligting te verminder deur meer as 30 persent. Ongelukkig kan die SunOS DBX program die gevolglike program nie lees (GDB het geen probleme). Die - Traditional-formaat skakelaar vertel ld om duplikaat inskrywings nie kombineer. - U simbool Force simbool in die uitvoer lêer daaroor gevoer word nie as 'n ongedefinieerde simbool. Deur dit te doen kan byvoorbeeld veroorsaak 'n skakel van bykomende modules uit standaard biblioteke. - U kan herhaal word met verskillende opsie argumente om bykomende ongedefinieerde simbole betree. - Ur Vir enigiets anders as C programme, hierdie opsie is gelykstaande aan r. dit genereer skuif aanvaarde uitset - d. w.z. 'n uitset lêer wat op sy beurt as insette tot ld kan dien. Wanneer 'n skakel C programme, - Ur oplos verwysings na konstruktors, in teenstelling met r. Dit werk nie om te gebruik - Ur op lêers wat hulself verbind met - Ur sodra die konstruktor tafel is gebou, dit kan nie tot bygevoeg. Gebruik - Ur net vir die laaste gedeeltelike skakel, en r vir die ander. --verbose Wys die weergawe nommer vir ld en lys die linkerkant jaloersheid ondersteun. Wys wat insette lêers kan en kan nie oopgemaak word. v - V Wys die weergawe nommer vir ld. Die - V opsie lys ook die ondersteuning jaloersheid. - version Wys die weergawe nommer vir ld en uitgang. - warn-algemene Waarsku wanneer 'n gemeenskaplike simbool is gekombineer met 'n ander algemene simbool of met 'n simbool definisie. Unix linkers toelaat dat dit 'n bietjie slordig praktyk, maar linkers op 'n ander bedryfstelsels nie. Hierdie opsie laat jou toe om potensiële probleme van die kombinasie van globale simbole vind. Ongelukkig het sommige C biblioteke gebruik hierdie praktyk, sodat jy 'n paar waarskuwings oor simbole kan kry in die biblioteke sowel as in jou programme. Daar is drie soorte globale simbole, hier geïllustreer deur C voorbeelde: int i 1 A definisie, wat gaan in die geïnitialiseerd data afdeling van die uitvoer lêer. eksterne int ek 'n ongedefinieerde verwysing, wat nie ruimte toewys. Daar moet óf 'n definisie of 'n gemeenskaplike simbool vir die veranderlike iewers wees. int i 'n Algemene simbool. As daar net (een of meer) algemene simbole vir 'n veranderlike, dit gaan in die geïnitialiseerd data gebied van die uitvoer lêer. Die linkerkant paart verskeie gemeenskaplike simbole vir dieselfde veranderlike in 'n enkele simbool. As hulle van verskillende groottes, dit tel die grootste grootte. Die linkerkant draai 'n gemeenskaplike simbool in 'n verklaring, indien daar 'n definisie van dieselfde veranderlike. Die - warn-algemene opsie kan vyf soorte waarskuwings produseer. Elke waarskuwing bestaan uit 'n paar van die lyne: die eerste beskrywing van die simbool net teëgekom, en die tweede beskryf die vorige simbool teëgekom met dieselfde naam. Een of albei van die twee simbole sal 'n gemeenskaplike simbool wees. Draai 'n gemeenskaplike simbool in 'n verwysing, want daar is reeds 'n definisie vir die simbool. Draai 'n gemeenskaplike simbool in 'n verwysing, want 'n latere definisie vir die simbool teëgekom. Dit is dieselfde as die vorige geval, behalwe dat die simbole ondervind in 'n ander orde. Kombineer 'n gemeenskaplike simbool met 'n vorige dieselfde grootte algemene simbool. Kombineer 'n gemeenskaplike simbool met 'n vorige groter algemene simbool. Kombineer 'n gemeenskaplike simbool met 'n vorige kleiner algemene simbool. Dit is dieselfde as die vorige geval, behalwe dat die simbole ondervind in 'n ander orde. - warn-vervaardigerskampioenskap Waarsku indien enige globale vervaardigerskampioenskap gebruik. Dit is net nuttig vir 'n paar lêer voorwerp formate. Vir formate soos COFF of ELF, kan die linkerkant nie opspoor die gebruik van globale vervaardigerskampioenskap. - warn-eenmalig waarsku een keer vir elke ongedefinieerde simbool, eerder as een keer per module wat verwys na dit. Vir elke op die command line genoem argief, sluit elke voorwerp lêer in die argief in die skakel, eerder as om te soek die argief vir die vereiste voorwerp lêers. Dit word normaalweg gebruik om 'n argief-lêer te omskep in 'n gedeelde biblioteek, dwing elke voorwerp wat in die gevolglike gedeelde biblioteek. - x Verwyder alle tydelike plaaslike simbole. Vir die meeste teikens, dit is al die plaaslike simbole wie se name begin met L. - x Verwyder alle plaaslike simbole. - y simbool Druk die naam van elke gekoppel lêer waarin simbool verskyn. Hierdie opsie kan enige aantal kere gegee. Op baie stelsels is dit nodig om 'n onderstreep prefix. Hierdie opsie is geskik wanneer jy 'n ongedefinieerde simbool in jou skakel, maar nie weet waar die verwysing vandaan kom. - (Argiewe -) --start-groep argiewe --end-groep Die argiewe moet 'n lys van argief lêers. Hulle kan óf eksplisiete lêername, of - l opsies. Die gespesifiseerde argiewe is herhaaldelik gesoek totdat daar geen nuwe ongedefinieerde verwysings geskep word. Gewoonlik word 'n argief slegs een keer deursoek in die volgorde waarin dit aangedui op die command line. As 'n simbool in die argief is nodig om 'n om deur 'n voorwerp in 'n argief wat later verskyn op die command line verwys ongedefinieerde simbool los, sal die linkerkant nie in staat wees om daardie verwysing op te los. Deur die groepering van die argiewe, word hulle al herhaaldelik gesoek totdat alle moontlike verwysings opgelos. Gebruik van hierdie opsie het 'n beduidende prestasie koste. Dit is die beste om dit te gebruik net wanneer daar onvermydelik omsendbrief verwysings tussen twee of meer argiewe. Gaan na die eerste. vorige. volgende. laaste gedeelte, tafel van contents. The opdrag taal bied eksplisiete beheer oor die skakel proses, sodat volledige spesifikasie van die kartering tussen die linkers invoer lêers en sy produksie. Dit beheer: invoer lêers liasseer formate uitvoer lêer uitleg adresse van artikels plasing van gewone blokke Jy kan 'n bevel te laai (ook bekend as 'n skakel script) om die linker óf uitdruklik deur die opsie - T, of implisiet as 'n gewone lêer. As die linkerkant 'n lêer wat dit nie kan erken as 'n gesteun voorwerp of argief formaat oopmaak, dit rapporteer 'n fout. Die ld opdrag taal is 'n versameling van state sommige is eenvoudig dokumente opstel van 'n bepaalde opsie, sommige gebruik word om te kies en groep invoer lêers of naam uitset lêers en twee tipes verklaring het 'n wesenlike en deurdringende invloed op die skakel proses. Die mees fundamentele opdrag van die ld opdrag taal is die opdrag AFDELINGS (sien afdeling Spesifisering Uitgawe Artikels). Sedert die. Die. . egter. data. vorige. volgende. Hierdie opsie kan enige aantal kere gebruik. Geïgnoreer. Hierdie opsie kan enige aantal kere gebruik. As hierdie opsie nie word vermeld, is 'n absolute lêer geproduseer. Die - V opsie lys ook die ondersteuning jaloersheid. Dit is slegs betekenisvol op platforms waarvoor gedeel biblioteke ondersteun. Dit is slegs betekenisvol op platforms waarvoor gedeel biblioteke ondersteun. Jy kan hierdie opsie gebruik soveel keer as wat nodig is om verskeie simbole in die command line definieer. Verskillende opstellers het verskillende mangling style. Die opsionele demangling styl argument kan gebruik word om 'n geskikte demangling styl vir jou samesteller kies. Wys wat insette lêers kan en kan nie oopgemaak word. Unix linkers toelaat dat dit 'n bietjie slordig praktyk, maar linkers op 'n ander bedryfstelsels nie.
No comments:
Post a Comment