Linux / Unix komandoa: Id

NAME

ld - LD erabiltzea , GNU lotzailea

SINOPSIA

ld [ options ] objfile ...

DESCRIPTION

Ld objektu eta artxibo fitxategi kopuru bat konbinatzen du, bere datuak lotzen ditu eta lotura erreferentziak lotzen ditu. Normalean programa bat konpilatzeko azken urratsa ld exekutatu behar da.

Ld Linker Command Language fitxategiak onartzen ditu AT & T-ren Link Editor Command Language sintaxia batean, esteka esteken gaineko kontrol esplizitua eta osoa emateko.

Orrialde honek ez du komando hizkuntza deskribatzen; ikus ld sarrera "info" edo eskuliburua ld: GNU lotzailea, komando-hizkuntzaren xehetasun osoz etaGNU lotzailearen beste alderdiei buruz.

Ldren bertsio honek BFD liburutegi orokorrak erabiltzen ditu helburu fitxategietan funtzionatzeko. Horrek aukera ematen du ld formatu ezberdinetan irakurtzeko, konbinatzeko eta idazteko, adibidez, adibidez, COFF edo "a.out". Formatu desberdinak elkarrekin lotu daitezke edozein fitxategi mota erabilgarri sortzeko.

Bere malgutasunaz gain, GNU lotzailea diagnostiko informazio gehiago ematen duen beste esteka batzuek baino lagungarria da. Lotzaile askok bertan behera utzi dute exekuzioa akats bat topatzean; ahal den guztietan, jarraitzen du exekutatzen, beste akatsak identifikatu ahal izateko (edo, kasu batzuetan, errore bat izan arren irteerako fitxategia lortzeko).

GNU estekatzailearen interfazea hainbat egoeratan estaltzea da, eta beste sarbide batzuekin bateragarria izan dadin. Ondorioz, portaera kontrolatzeko aukera asko dituzu.

AUKERAK

Lotzaileak komando lerroko aukera ugari onartzen ditu , baina praktikan praktikan gutxi batzuk testuinguru jakin batean erabiltzen dira. Adibidez, ld- ren erabilera ohikoena Unix objektuko fitxategien estekadura estekatu eta onartzen da Unix sisteman . Sistema horretan, "hello.o" fitxategi bat lotzen du:

ld -o /lib/crt0.o hello.o -lc

Horrek esan nahi du "/lib/crt0.o" fitxategia "hello.o" eta "libc.a" liburutegiarekin lotura duten irteera izeneko fitxategia sortzea, hau da, bilaketa-direktorio estandarrak. (Ikusi beheko- l aukeraren inguruko eztabaida.)

Komando lerroan komando lerroko aukera batzuen artean zehaztu daiteke. Hala ere, fitxategiak aipatzen dituzten aukerak, adibidez, -l edo -T , komando lerroan aukera agertzen den puntuan irakur daiteke, objektu fitxategiekin eta beste fitxategi-aukerekin alderatuta. Argumentu ezberdineko fitxategiak ez diren errepikatzeak ez du inolako eraginik izango, edo aurreko agerraldiak gaineratuko ditu (komando lerroan ezkerrekoak direnean). Behin baino gehiagotan zehaztutako aukerak zehaztu beheko deskribapenetan.

Aukerarik gabeko argumentuak objektu fitxategiak edo artxiboak lotu behar dira. Komando lerroko aukerak erabiliz jarraitu, aurrez aurre edo nahastu ahal izango dira, objektu fitxategiaren argumentua ez dela aukera bat eta bere argumentuaren artean jar ez izan.

Normalean lotzailea objektu fitxategi batekin gutxienez bistaratzen da, baina sarrera-fitxategi binarioak zehaztu ditzakezu -l , -R erabiliz eta script komando-hizkuntza erabiliz. Bitar sarrerako fitxategiak ez badira zehazten, loturak ez du inolako irteerarik sortzen, eta sarrerarik ez duen mezua sortzen du.

Estekatzaileari objektu fitxategi baten formatua aitortu ezean, lotura-script bat izango dela suposatuko du. Horrela zehaztutako gidoia estekatzailearen script nagusia (estekatzailearen script lehenetsia edo T- bidez zehaztutakoa) gehitzen du . Funtzio honek objektu edo artxibo bat agertzen den fitxategi bati lotzen dion estekatzaileari baimena ematen dio, baina benetan sinboloen balioak besterik ez ditu definitzen, edo "INPUT" edo "GROUP" erabiltzen ditu beste objektu batzuk kargatzeko. Kontutan izan script hau modu horretan zehaztea estekatzailearen script nagusia baino ez dela; erabili -T aukera estekatzailearen script lehenetsia guztiz ordezkatzeko.

Bere izenak letra bakarrarekin dituen aukerei dagokienez, aukera-argumentuak letra-tipoaren jarraipena egin behar du zuriuneen esku-hartzerik gabe, edo argibide bereziak eman behar ditu, behar diren aukeren arabera.

Bere izenak letrak anitz dituen aukerei dagokienez, marratxo bat edo bi aukera izenaren aurretik sar daitezke; Adibidez, -trace-symbol eta --trace-symbol baliokideak dira. Oharra - Arau horri salbuespen bat dago. Gutxienez 'o' batekin hasten diren letra-aukera anitzek bi marra baino ez dituzte aurrez aurre. Honek nahasmendua murrizten du -o aukerarekin. Adibidez -magik- ek Irteerako fitxategiaren izena maiztasunarekiko ezartzen du -magik-ek NMAGIC bandera ezartzen du irteeran.

Letra anitzetako aukera batzuen argibideak bereizketatik egin behar dira, izen bereko ekuazioak berdinen ikur bidez edo bereizitako argumentu gisa eman behar direnak. Adibidez, --trace-symbol foo eta --trace-symbol = foo baliokideak dira. Gutun anitzeko aukeretako izenen laburdura bakarrak onartzen dira.

Kontuan hartu - konpiladorearen kontrolatzaile baten bidez (adibidez, gcc ) konpiladorearen kontrolatzaile baten bidez (adibidez, gcc ), link-ak komando lerroko aukera guztiak -Wl, (edo konpiladore kontrolatzaile partikularra egokia den moduan) aurrizkia izan behar lukete:

gcc -Wl, - startuproup foo.o bar.o -Wl, - endgroup

Garrantzitsua da, bestela konpiladoreen gidariaren programak esteka lotzen dituen aukerak isilarazi ditzake, esteka txarrean eginda.

Hona hemen GNU lotzailea onartutako komando lerro generikozko aldagaien taula:

-Gauza bat

HP / UX bateragarritasunerako aukera hau onartzen da. Gako-hitzaren argumentuak kateen artxibo , partekatu edo lehenetsitako bat izan behar du . -archive funtzionalki baliozkoa da -Batikoa , eta beste bi gako-funtzio funtzionalak dira -Bynamic . Aukera hau erabil daiteke edozein aldiz.

- Arkitektura

--architecture = arkitektura

Ldren uneko oharra, aukera hau erabilgarria da soilik Intel 960 arkitektura familiarrentzat. Ld konfigurazio horretan, arkitektura- argumentuak 960 familiako arkitektura partikularra identifikatzen du, babes batzuk eta artxibo-liburutegien bilaketa-bidea aldatuz.

Ld-ren etorkizuneko argitalpenak antzeko funtzionalitatea izan dezake beste arkitektura-familientzat.

-b Sarrera-formatua

--format = input-format

ld objektu fitxategi mota bat baino gehiago onartzen konfiguratzeko. Zure ld modu horretan konfiguratuta badago, aukera hau erabil dezakezu: -b aukera, komando lerroan aukera hau jarraitzen duten sarrerako objektu fitxategientzako bitarteko formatua zehazteko. Nahiz eta ld formatu formatu alternatiboak onartzen konfiguratzen direnean, normalean ez duzu zehaztu behar, ld formatu bakoitzeko ohiko formatu lehenetsi gisa aurrezteko konfiguratuta egon behar baita. sarrera-formatua testu katea da, BFD liburutegiak onartzen duen formatu jakin baten izena. ( Objdump -i objektu binario erabilgarriak zerrendatu ditzakezu).

Aukera hau erabili nahi baduzu, fitxategi bitarrak formatu bitxi bitxi batekin lotzen badituzu. Era berean, formatu jakin batzuetarako (formatu ezberdineko objektu fitxategiak estekatuta) formatu zehatzak aldatzeko ere erabil dezakezu -b -t formatu jakin batean objektu fitxategien talde bakoitzaren aurretik sarrera-formatua barne.

Formatu lehenetsia "GNUTARGET" inguruneko aldagaitik hartua da.

Idazketa-formatua script-ean zehaztu dezakezu, "TARGET" komandoa erabiliz;

-c MRI-komandoa fitxategia

--mri-script = MRI-komandoa fitxategia

MRIk sortutako loturak dituzten bateragarritasunerako, ld ordezko eta mugatutako komando hizkuntza idatzitako script-ak onartzen ditu, GNU ld dokumentazioan MRI fitxategien Compatible Script fitxategiak atalean deskribatuta. Sartu MRI script fitxategiak aukera -c ; erabili -T aukera, helburu orokorreko ld script-en hizkuntzan idatzitako estekatzailearen scriptak exekutatzeko. MRI-cmdfile badaude existitzen ez bada, ld- en aukerak zehazten dituen direktorioetan bilatzen du.

-d

-dc

-dp

Hiru aukera hauek baliokideak dira; Hainbat modu onartzen dira estekatzaile batzuekin bateragarritasuna lortzeko. Irudien komunztadura espazioa ematen dute nahiz eta irteerako fitxategi erlojagarria zehazten bada (r-rekin). "FORCE_COMMON_ALLOCATION" script aginduak efektu bera du.

eta sarrera

--entry = sarrera

Erabili sarrera zure programaren hasierako exekuzioaren ikur esplizitua, sarrera-puntu lehenetsia baino. Izenez izeneko ikurrik ez badago, lotzailea sarrerarekin zenbaki bat bezala aztertuko du eta sarrera gisa erabiliko da (zenbakia 10 oinarrian interpretatuko da; oinarriko 0x oinarri bat erabil dezakezu 16 edo 0 oinarri 8).

-E

--export-dinamikoa

Dinamikoki lotutako exekutagarria sortzean, sinbolo guztiak sinbolo dinamikoari gehitzen dizkio. Sinbolo dinamikoen taula objektu dinamikotan ikusgai dauden sinboloen multzoa da.

Aukera hau erabiltzen ez baduzu, sinbolo dinamikoen taulak loturak aipatzen dituen objektu dinamiko bat aipatzen duten ikurrak baino ez ditu izango.

"Dlopen" erabiltzen baduzu programa batek definitutako sinboloak atzera egin behar duen objektu dinamikoa kargatzeko, beste objektu dinamiko bat baino gehiago izan ezean, agian aukera hau erabili beharko duzu programa bera lotzen denean.

Script bertsioa ere erabil dezakezu sinboloak ikurraren ikur dinamikoan gehitu behar diren kontrolatzeko, irteerako formatuak onartzen badu. Ikus description --version-script- en erreferentzia @ ref {VERSION}.

-EB

Lotu big-endian objektuak. Honek irteerako formatu lehenetsia eragiten du.

-EL

Lotu apur endian objektuak. Honek irteerako formatu lehenetsia eragiten du.

-f

- izen soziala

ELF partekatutako objektu bat sortzean, ezarri barne DT_AUXILIARY eremua zehaztutako izenari. Honek lotesle dinamikoa kontatzen du partekatutako objektuaren ikur-taulan objektu partekatutako izenaren sinbolo-taulan erabilitako iragazki osagarri gisa erabili behar dela.

Iragazkien objektu honen aurkako programa bat lotzen baduzu gero, programa exekutatzean, lotura dinamikoa DT_AUXILIARY eremua ikusiko duzu. Lotura dinamikoa iragazkiaren objektuetatik edozein ikurrak ebazten baditu, lehendabizi egingo du partekatutako objektuaren izenean definizio bat dagoen ala ez. Bat badago, iragazkien objektuaren definizioaren ordez erabiliko da. Partekatutako objektuaren izena ez dago existitzen. Horrela, partekatutako objektuaren izena zenbait funtzio ezarpen alternatibo bat egiteko erabil daiteke, beharbada arazteko edo makinen berariazko errendimendua lortzeko.

Aukera hau behin baino gehiagotan zehaztu daiteke. DT_AUXILIARY sarrerak komando-lerroan agertzen diren ordenan sortuko dira.

-F izena

--filter izena

ELF partekatutako objektu bat sortzean, ezarri barne DT_FILTER eremua zehaztutako izenari. Honek konektore dinamikoa kontatzen du sortutako objektu partekaturako taularen ikurrak iragazki gisa erabili behar direla partekatutako objektuaren ikur-taulan.

Aurrerago iragartzen baduzu programa bat iragazkiaren objektu honen aurka, orduan, programa exekutatzean, lotura dinamikoa DT_FILTER eremua ikusiko duzu. Lotura dinamikoa sinboloak ebazten ditu iragazkiaren objektuaren ikur-taularen arabera, ohikoa den bezala, baina benetan lotuko den objektuaren izenean aurkitutako definizioekin lotuko da. Horrela, iragazkiaren objektua erabil daiteke objektuaren izena emandako sinboloen azpimultzo bat hautatzeko.

Lotura zaharreko batzuek -F aukera erabili dute konpilazio tresnaren bidez, objektu-fitxategiaren formatua zehazteko, sarrera eta irteera-objektuko fitxategietarako. GNU estekaak beste helburu batzuetarako mekanismoak erabiltzen ditu: the -b , --format , --oformat aukerak, "TARGET" komandoak estekatzailearen script-ean eta "GNUTARGET" ingurune aldagaia. GNU lotzailea ez da baztertuko -F aukerarik ELF partekatutako objektua sortzen ez denean.

-berri izena

ELF exekutagarri edo partekatutako objektu bat sortzean, deitu NAME objektu exekutagarria edo partekatua deskargatzen denean, DT_FINI funtzioaren helbidearekin ezarrita. Lehenespenez, loturak "_fini" erabiltzen du deitzeko funtzio gisa.

-g

Ez ikusi. Beste tresna batzurekin bateragarria.

-G balioa

--gpsize = balioa

Ezarri objektuen gehienezko tamaina optimizatzeko GP erregistroa tamaina erabiliz . Objektu fitxategi formatuentzat soilik esanguratsua da, esate baterako, MIPS ECOFF, objektu handiak eta txikiak jarriz atal desberdinetan. Honek ez du jaramonik egingo beste objektuko fitxategi formatuentzat.

-h izen

-soname = izena

ELF partekatutako objektu bat sortzean, ezarri barne DT_SONAME eremua zehaztutako izenari. Exekutagarri bat DT_SONAME eremua duen objektu partekatura estekatuta dagoenean, exekutagarria exekutatzen denean, lotzaile dinamikoa DT_SONAME eremuak zehaztutako partekatutako objektua kargatzen saiatuko da linkerari emandako fitxategi izena erabiliz.

-i

Egin esteka inkremental bat (aukera -r ).

-init izena

ELF exekutagarri edo partekatutako objektu bat sortzean, deitu NAME objektu exekutagarria edo partekatua kargatzean, DT_INIT funtzioaren helbidearekin ezarrita. Lehenespenez, lotzailea "_init" deitzen duen funtzio gisa erabiltzen du.

artxiboa

--library = artxiboa

Gehitu artxiboaren fitxategien artxiboa esteka esteken zerrendan. Aukera hau erabil daiteke edozein aldiz. Ld- k bere "libarchive.a" agerraldien bilaketa-zerrenda bilatzeko zehaztuko du artxibo bakoitza zehaztuta.

Liburutegi partekatuak onartzen dituzten sistemetan, liburutegiak ".a" baino ". Zehazki, ELF eta SunOS sistemetan, ".so" luzapeneko liburutegiaren direktorio bat bilatu beharko du ". A" luzapenarekin bat bilatu aurretik. Hitzarmen bidez, ".so" luzapenek liburutegi partekatu bat adierazten dute.

Lotzailea artxibo bat behin bakarrik bilatzen du, komando lerroan zehaztutako lekuan. Artxiboak komando lerroan artxiboaren aurrean agertutako objektu batean definitu ez duen ikur bat definitzen badu, loturak artxiboaren fitxategi egokia (k) izango du. Hala ere, komando lerroan agertzen den objekturik definitu gabeko sinbolo batek ez du lotzailea artxiboa berriro bilatzeko.

Ikusi - ( loturari hainbat aldiz bideratzeko artxibo bat behartzeko modua).

Komando-lerroan hainbat fitxategi artxibatu ditzakezu.

Artxiboaren bilaketa mota estandarra da Unix estekarientzat. Hala ere, ld onAIX erabiltzen ari bazara, kontutan izan AIX lotzailearen loturaren ezberdina dela.

-L bilaketa

--library-path = bilatu

Gehitu bide-bilaketa fitxategiak liburutegiak eta ld kontrol gidoiak bilatuko dituen bideen zerrendan. Aukera hau erabili ahal izango duzu hainbat aldiz. Direktorioak komando-lerroan zehazten diren ordenan bilatzen dira. Komando lerroan zehaztutako direktorioak direktorio lehenetsiak baino lehen bilatu behar dira. Guztiak -L aukerak guztiak -l aukeretan aplikatzen dira, aukeren ordena agertzen ez bada ere.

Searchdir "=" hasten bada, orduan "=" sysroot aurrizkiak ordeztuko du, lotzailea konfiguratuta dagoenean zehaztutako bidea.

Bide-sekuentziatutako bilaketa-multzo lehenetsiak (zehazturik egon gabe -L- ekin) zein emulazio modua erabiltzen ari den azaltzen du, eta, kasu batzuetan, nola konfiguratu zen.

Bideak "SEARCH_DIR" komandoarekin lotura script batean zehaztu daitezke. Direktorioak zehaztutako modu honetan komando lerroan estekatzailearen script-a agertzen den puntuan bilatuko da.

-m emulazioa

Emulatu emulazio lotzailea. Emule erabilgarriak zerrendatu ditzakezu --verbose edo -V aukerak erabiliz.

Aukera hori ez bada erabiltzen, "LDEMULATION" inguruneko aldagaiaren emulazioa "definituta badago".

Bestela, emulazio lehenetsia lotzailea nola konfiguratu den azaltzen du.

-M

--print-mapa

Estekatu irteera estekaren mapa. Esteka-mapek estekari buruzko informazioa eskaintzen dute, besteak beste:

*

Non dauden objektu fitxategiak eta ikurrak memoria batean mapatzen diren.

*

Ohiko ikurrak esleitu zaizkie.

*

Esteka honetan sartzen diren artxibo-kide guztiak, artxibo-kidea bultzatuz sartutako ikurrarekin.

-n

--nmagic

Desaktibatu atalen lerroen lerrokatzea, eta irteera "NMAGIC" gisa markatu ahal bada.

-N

--omagic

Ezarri testua eta datuak atalak irakurgarriak izateko eta idazteko. Era berean, ez ezazu orriaren lerrokatu datuen segmentuan, eta desgaitu liburutegi partekatuen arteko loturarik. Irteerako formatua Unix estiloko zenbakien magia onartzen badu, markatu irteera "OMAGIC" gisa.

--no-omagic

Aukera honek -N aukeraren gaineko eraginik handiena ukatzen du. Testu-atala irakurtzeko soilik ezartzen du eta datu-segmentua lerrokatu behar da. Oharra: aukera honek ez du liburutegi partekatutakoen arteko estekak gaitu. Erabili honetarako dinamikoa .

-o irteera

--output = irteera

Erabili irteera ld- k sortutako programa gisa; Aukera hau zehazten ez bada, izena a.out lehenespenez erabiliko da. "OUTPUT" komandoaren script-ak irteerako fitxategiaren izena zehaztu dezake.

-O maila

Zenbakia zero baino handiagoa den zenbakizko balioa bada, irteera optimizatzen du. Honek denbora gehiago iraun dezake eta, beraz, seguruenik azken bitarrerako bakarrik gaitu beharko zenuke.

-q

--emit-relocs

Utzi lekualdaketa atalak eta edukiak guztiz estekatutako ebazpideekin. Post link azterketa eta optimizazio tresnak informazio hau behar izan dezake exekutagarrien aldaketa egokiak egiteko. Honek exekutagarri handiagoak sortzen ditu.

Aukera hau ELF plataformetan bakarrik onartzen da.

-r

--relocateable

Sortu irteera txantiloia sortzea --- hau da, irteera-fitxategia sortzea ahalbidetzen du. Hau sarritan deitzen zaio lotura partziala . Bigarren mailako efektuak, Unix magiko zenbakiak onartzen dituzten inguruneetan, aukera honek "OMAGIC" irteerako fitxategiaren zenbaki magikoa ere ezartzen du. Aukera hau zehazten ez bada, fitxategi absolutua sortzen da. C ++ programak estekatzean, aukera honek ez du eraikitzaileen erreferentziak ebatziko. Horretarako, erabili -Ur .

Sarrerako fitxategiak irteerako fitxategiaren formatu berbera ez duenean, estekatze parekotzat onartzen da sarrerako fitxategiak ez badu lekualdaketarik. Irteerako formatu ezberdinek murriztapenak izan ditzakete; Adibidez, "a.out" oinarritutako formatu batzuek ez dute loturarik inolako loturarik sarrerako fitxategiekin beste formatu guztietan.

Aukera honek -i bezala egiten du.

-R fitxategiaren izena

--just-symbols = fitxategi - izena

Irakurri sinboloen izenak eta beren helbideak fitxategi-izenetik , baina ez berrabiarazi edo sartu irteeran. Honek zure irteerako fitxategiak beste programetan definitutako memoriako kokapen absolutuetara sinbolikoki erreferentziatzeko aukera ematen du. Aukera hau erabil dezakezu behin baino gehiagotan.

Beste ELF lokailuei bateragarri egiteko, -R aukera direktorio-izen bat jarraitzen bada, fitxategi izen bat baino gehiago, -rpath aukera gisa tratatuko da.

-s

--strip-guztiak

Irteera fitxategitik informazioaren sinbolo guztiak ezabatu.

-S

--strip-arazketa

Ezabatu arazte-ikuraren informazioa (baina ez ikur guztiak) irteerako fitxategitik.

-t

--trace

Inprimatu fitxategien izenak ID gisa prozesatzen ditu.

-T script fitxategia

--script = script fitxategia

Erabili script fitxategia esteka editore gisa. Script honek ld 's lehenetsitako esteka script (ordez gehitzen du ordez) ordezkatzen du , beraz komando fitxategia irteerako fitxategia deskribatzeko beharrezko guztia zehaztu behar du. Script-fitxategiak uneko direktorioan badago, "ld" -ek aurreko L- aukerak zehazten dituen direktorioetan bilatzen du. Hainbat aukera-mota pilatzen dira.

-e ikurra

--undefined = ikurra

Irteerako fitxategian definitutako sinbolo gisa sartu behar den ikurra adierazi. Horretarako, adibidez, liburutegi estandarren modulu osagarrien estekak gaitu. -u aukerazko argumentu ezberdinekin errepikatu daiteke sinbolo indefinido osagarriak gehitzeko. Aukera hau "EXTERN" linker script komandoaren baliokidea da.

-Ur

C ++ programak ez ezik, aukera hau r-ren baliokidea da: irteera txarrak sortzen ditu --- hau da, irteera-fitxategia, berriz, ld- rako sarrera gisa balio dezake. C ++ programak estekatzean, -Ur- k eraikitzaileei erreferentzia egiten die, ez bezala -r . Ez du funtzionatzen erabiltzerik -Ur- rekin estekatuta zeudenak diren fitxategietan. Eraikitzailearen mahaia eraiki ondoren, ezin da gehitu. Erabili -Ezta azken esteka partzialerako soilik, eta -r besteentzat.

--unique [= ATAZA ]

Irteera-atal independente bat sortzen du atal bakoitzerako atalarekin bat datorren ATALA , edo aukerazko komodina SECTION argumentua falta bada, umezurtz sarrerako atal bakoitzerako. Umezurtz atal bat lotura estandarraren gidoian ez dago zehazki. Aukera hau hainbat aldiz erabil dezakezu komando lerroan; Izen bereko sarreraren atalen bateratze normala eragozten du, irteerako atalen esleipenak gainidatzi linker script batean.

-v

--version

-V

Erakutsi ld bertsioaren zenbakia. The -V aukera ere onartzen emulazio zerrendatzen.

-x

--discard-guztiak

Ezabatu tokiko ikur guztiak.

-X

--discard-bertakoek

Ezabatu behin-behineko tokiko ikurrak. Helburu gehienentzat, hau da L izenarekin hasten diren tokiko ikurrak.

eta ikurra

--trace-symbol = ikurra

Lotutako fitxategi bakoitzaren izena adierazi zein ikur agertzen den. Aukera hau eman daiteke hainbat aldiz. Sistema askotan, nabarmendu beharra dago azpimarra.

Aukera hau oso erabilgarria da zure esteka sinbolikorik ez baduzu baina ez dakizu non dagoen erreferentzia.

-Y bidea

Gehitu bide-izena liburutegi bilaketa bide lehenetsira. Aukera hau existitzen da Solaris bateragarritasuna lortzeko.

-z keyword

Aitortutako hitzak "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" eta "nocopyreloc" dira. ". Beste gako-hitzak ez dira kontuan hartuko Solaris bateragarritasuna lortzeko. "initfirst" lehenengoa hasieran exekutatzen den objektua beste edozein objektu baino lehen markatzen du. "interpose" sinbolo guztien taula baina lehen exekutagarria den objektuaren marken artean markatzen du. "loadfltr" bere exekuzioan berehala exekutatzen den objektua markatzen du. "nodefaultlib" objektu honen mendekotasunen bilaketa baztertu egingo duen objektua markatzen du liburutegi bidezko bilaketa bide lehenetsiak. "nodelete" objektua exekutatzen ari ez den bitartean deskargatu behar da. "nodlopen" "dlopen" ez dago erabilgarri. "nodump" objektua ezin da "dldump" ezabatu. "orain" objektuari ezartzen dio denbora luzez loteslea lotzeko. "jatorria" objektuak $ ORIGIN izan dezake. "defs" ez ditu definitutako sinboloak onartzen. "muldefs" definitutako hainbat aukera ematen ditu. "combreloc" erlojuen atal anitzak konbinatzen ditu eta horiek ordenatzen ditu sinbolo dinamikoen bilaketak egiteko.

"nocombreloc" desplazamendu bat baino gehiago konbinatzen ditu. "nocopyreloc" kopiak kopiak ekoizteko aukera desgaitzen du.

- ( artxiboak )

--Start-taldeko artxiboak - taldean

Artxiboek artxibo-fitxategien zerrenda izan behar dute. Esate baterako esplizitua izan daiteke fitxategien izenak, edo -l aukerak.

Behin zehaztutako artxiboak behin eta berriz errepikatzen dira erreferentzia ez diren beste erreferentziak sortu arte. Normalean, artxiboa komando lerroan zehazten den ordenean behin bakarrik bilatuko da. Artxibo horretan ikur bat beharrezkoa bada objektu batek aipatutako definitu gabeko sinbolo bat komando lerroan agertuko den artxibo batean azaltzea, esteka horrek ezin izango du erreferentzia hori ebatzi. Artxiboak biltzeko, behin eta berriz bilatu behar dira denak erreferentzia posible guztiak konpondu arte.

Aukera hau erabiliz, errendimendu-kostu esanguratsua du. Onena da bi artxibo edo gehiagoren arteko erreferentzia zirkular ezinbestekoak direnean soilik erabiltzea.

--accept-ezezagun-input-arkua

--no-onartu-ezezagun-input-arkua

Loturak onartzen ditu sarrerako fitxategiak onartzen dituzten arkitekturak ez onartzeko. Asmoa da erabiltzaileak zer egiten ari diren jakitea eta nahitaez lotzen ditu sarrerako fitxategi ezezagun haietan. Loturako portaera lehenetsia zen, 2.14 bertsioaren aurretik. Oharra 2.14tik aurrera egindako portaera lehenetsia sarrerako fitxategiak baztertzea da, eta beraz, --accept-unknown-input-arch aukera gehitu zaie portaera zaharrera leheneratzeko.

Gertakariaren giltza

Aukera hau ez da kontuan hartuko SunOS bateragarritasunerako .

-Bdynamic

-dy

-call_shared

Liburutegi dinamikoen aurkako esteka. Hau liburutegi partekatuak onartzen dituzten plataformetan bakarrik esanguratsua da. Aukera hau normalean plataforma horietako lehenetsia da. Aukera honen aldaera ezberdinak sistemen bateragarritasuna lortzeko dira. Komando lerroan hainbat aldiz erabili ahal izango duzu aukera hau: liburutegiak bilatzen ditu -l aukeren bidez bilatzen du.

-Bgroup

Ezarri "DF_1_GROUP" bandera "DT_FLAGS_1" sarreran atal dinamikoan. Honek exekuzio-lotzaile honek objektu honetan bilaketak egiteko eta taldearen barruan bakarrik egiteko behar dituen mendekotasunak eragiten ditu. - Ez dago definituta inplizituki. Aukera hau Liburutegi konpartituek onartzen dituzten ELF plataformen esanahia besterik ez da.

-Bstatic

-dn

-non_shared

-static

Ez libratu partekatutako liburutegiekin. Hau liburutegi partekatuak onartzen dituzten plataformetan bakarrik esanguratsua da. Aukera honen aldaera ezberdinak sistemen bateragarritasuna lortzeko dira. Komando lerroan hainbat aldiz erabili ahal izango duzu aukera hau: liburutegiak bilatzen ditu -l aukeren bidez bilatzen du.

-Bsymbolic

Liburutegi partekatu bat sortzean, loturiko sinbolo orokorren erreferentziak lotzen ditu liburutegiko partekatutako definizioan, baldin badago. Normalean, partekatutako liburutegian definizioa gainbegiratzen duen liburutegi partekatu bati lotutako programa bat dago posible. Aukera hau Liburutegi partekatuak onartzen dituzten ELFplatformen esanguratsua da.

--check-atal

--no-check-atal

Lotzaileak ez ditu atalen helbideak egiaztatzen galdetuko zaie, gainjarritako edozein puntutara ikusteko. Normalean lotzailea check hau egingo du, eta topaketak aurkitzen baditu errore mezu egokiak sortuko ditu. Lotzaileak ezagutzen du eta gainjartzen atalen hobariak egiten ditu. Portaera lehenetsia berrezarri daiteke komando lerroaren modua erabiliz --check-sections .

--cref

Irteera gurutze erreferentzia taula. Estekatzailearen mapa fitxategi bat sortzen ari bada, gurutze erreferentzia taulan maparen fitxategian inprimatuko da. Bestela, irteera estandarrean inprimatuta dago.

Mahaiaren formatua nahita sinplea da, beharrezkoa izanez gero, script baten bidez prozesatu ahal izango da. Sinboloak inprimatuta daude, izenaren bidez ordenatuta. Sinbolo bakoitzerako, fitxategi izenen zerrenda ematen da. Sinbolo hori definituta badago, zerrendatutako lehen fitxategia definizioaren kokapena da. Gainerako fitxategiek ikurrarekin erreferentziak dituzte.

--no-definitzen-ohikoa

Aukera honek helbideen esleipena sinbolo arruntetara ekartzen du. "INHIBIT_COMMON_ALLOCATION" script aginduak efektu bera du.

Aukerarik ez --no-define-common aukera ematen dio irteerako fitxategi motaren arabera ikur komunei esleitzeko erabakia bereizteko; Bestela, Irteerako unitate eraldatzailea ez da indibiduala sinbolo arruntetara bidaltzea. Erabili --no-define-common- k Liburutegi partekatutako erreferentziatutako ikur komunak aukera ematen du, programa nagusiaren helbideak bakarrik esleitzeko. Horrek liburutegi partekatuan erabili gabeko bikoiztuko espazioa ezabatzen du, eta gainera nahasmendu bat eragozten du erroreen bikoiztean ebatzi baino gehiago, denbora errealeko sinboloen bereizmen bidezko bilaketa espezifikoetarako modulu dinamikoak badituzte.

--defsym symbol = adierazpena

Sortu irteerako fitxategi batean ikur global bat, adierazpenek emandako helbide absolutua dutenak . Aukera hau erabili ahal izango duzu komando-lerroan hainbat sinbolo zehazteko beharrezkoak diren guztietan. Aritmetika modu mugatu bat onartzen da testuinguru honetan adierazpenean : konstante hamaseitarra edo lehendik dagoen ikur baten izena eman dezakezu edo erabili "+" eta "-" konstante hamaseitarren edo ikurrak gehitzeko edo kentzeko. Esplotazio zehatzagoak behar badituzu, kontuan hartu komando-hizkuntzaren estekatzailearen hizkuntza script batetik. Oharra: ez dago zuriunerik egongo sinboloen artean, zeinu berdina (`` = '' ') eta adierazpena .

--demangle [= estilo ]

--no-demangle

Aukera hauek ikurreko izenen desberdintasuna kontrolatzen du errore-mezuen eta beste irteeren artean. Konektoreak deigarriak direnean, izen sinbolikoak modu irakurgarrian aurkezten saiatzen da: objektuaren fitxategi formatuan erabiltzen diren azpimenu nagusiak zerrendatzen ditu eta C ++ mangled sinbolo izenak erabiltzaile izen irakurgarri bihurtzen ditu. Konpilagailu desberdinak mangling estilo desberdinak dituzte. Hautazko demangling estilo argumentua erabil daiteke zure konpilatzailearen demangling estiloa egokia aukeratzeko. Konektoreak ingurune aldagaia COLLECT_NO_DEMANGLE ezarri ezean ezeztatuko du modu lehenetsian. Aukera hauek lehenetsi gisa baliogabetzeko erabil daitezke.

--Dynamic-linker fitxategia

Konektore dinamikoa izena ezarri. Hau esanguratsua da ELF exekutagarri dinamikoki lotutakoak sortzean. Lotura dinamikoa lehenetsia normalean zuzena da; Ez erabili hau zer egiten ari zaren ez badakizu.

--embedded-relocs

Aukera hau PIC kodea txertatuta dagoen MIPS estekatua da, -membedded-pic aukerarekin GNU konpilatzailearen eta muntatzailearentzako sortutakoa. Loturak denbora errealean erabil daitekeen taula bat sortzen du estekatutako balioak hasieratik estatikoki inolako datu lekuz aldatzeko. Ikusi kodea testsuite / ld-empic xehetasunetarako.

--fatal-abisuak

Abisu guztiak akatsak bezala tratatzea.

--force-exe-atzizkia

Ziurtatu irteerako fitxategiak .exe atzizkia duela.

Erabat irristatu den irteerako fitxategi bat behar bezala eraiki ez bada " .exe " edo " .dll " atzizkia, aukera honek loturari irteera fitxategia izen bereko kopiara behartzen du ".exe" atzizkiarekin. Aukera hau erabilgarria da Unix makefiles aldatua Microsoft Windows ostalarian erabiltzean, Windows bertsio batzuek ez dutela irudia exekutatuko ".exe" atzizki batean bukatzen ez bada behintzat.

--no-gc-atal

--gc-atal

Gaitu erabilitako sarrera atalen zabor bildumak. Aukera hau onartzen ez duten helburuen ezeztatzea da. Aukera hau ez da -r- rekin bateragarria, ezta estekatze dinamikoa erabili behar da. Portaera lehenetsia ( zabor bildumarik egin gabe ) berrezarriko da komando lerroan --no-gc-sections zehaztuz.

--help

Irteera estandarraren komando lerroko aukerak laburpen bat inprimatu eta irten.

--target-laguntza

Irteera estandarraren helburu espezifikoen aukeren laburpena inprimatu eta irten.

-Map mapfile

Lotura bat mapan inprimatu fitxategi maparen fitxategian. Ikus deskribapena -M aukera, goian.

--no-gorde-memoria

Ld normalean optimizatzen da memoria-memoriaren erabilerarako abiaduraren bidez, sarrera-fitxategien ikur-taulak memorian gordetzeko. Aukera honek ld kontatzen du, horren ordez, memoria-erabilera optimizatzeko, ikur-taulak berriro ere behar bezala markatuz. Beharbada beharrezkoa izango da ld memoria espaziotik kanpo exekutagarri handi bat estekatzean.

--no-undefined

-z defs

Normalean liburutegi partekatu gabeko sinbolo bat sortzean, undefined ikurrak onartzen dira eta exekutatzen ari diren kargatzaileek konpondu ahal izateko utzi dute. Aukera hauek ez dira definitu gabeko sinboloak onartzen.

--allow-anitzeko definizio

-z muldefs

Normalean, sinbolo bat hainbat aldiz definituta dagoenean, loturak akats larria agertuko du. Aukera hauek definitzeko aukera ematen dute eta lehen definizioa erabiliko da.

--allow-shlib-undefined

Onartu gabeko ikurrak onartu objektu partekatuak ere --no-undefined ezarrita dago. Emaitza garbia izango da objektu erregularretan sinboloak ez direnean akatsen bat egongo dela oraindik, baina ez dira bereizitako sinboloak partekatutako objektuetan. No_undefined-ren ezarpena suposamendua egiten du exekutatzen den loturak definitu gabeko sinboloetan ezkutatzen duela. Hala ere, badago gutxienez sistema bat (BeOS), non definitutako sinboloak liburutegi partekatuetan normalak diren, kernelek denbora tarteetan adabakiak dituena, funtzionala den uneko arkitektura hautatzeko. IE dinamikoki hautatu egokia mozketa funtzioa. Dirudienez, HPPAren partekatutako liburutegiek sinboloak ez dituztenak ere ohikoak izaten dira.

--no-undefined-en bertsio

Normalean, sinboloak ez du definitutako bertsioa, lotzailea ez ikusi egingo zaio. Aukera honek sinboloak ez ditu zehaztutako bertsioarekin eta errore larria sortzen da horren ordez.

--no-warn-datoz

Normalean ld errore bat sortuko du arrazoi batzuen arabera ez datozen sarrerako fitxategiak estekatzen saiatzen bazara, beharbada prozesadore ezberdinetarako edo hainbat bertsioetarako konpilatu delako. Aukera honek esaten du silenzio hori ahalik eta errore posibleak baimendu behar direla. Aukera hau arretaz erabili behar da, estekatzailearen akatsak desegokiak direla bermatzen duen ekintza berezi bat hartu baduzu.

--no-osoa-artxiboa

Desaktibatu ondoko artxibo-fitxategien guztizko fitxategiaren eragina.

--noinhibit-exec

Jarrai ezazu exekutagarriaren irteera fitxategia erabilgarri dagoenean. Normalean, lotzailea ez du irteerako fitxategirik sortuko, estekaren prozesuan erroreak aurkitzen baditu; Irteerako fitxategia idatzi gabe irteera egiten du errore bat gertatu denean.

-nostdlib

Komando lerroan zehazki zehaztutako liburutegien direktorioak bakarrik bilatu. Estekatzailearen script-ak zehazten dituzten liburutegiko direktorioak (komando lerroan zehaztutako estekari-gidoiak barne) ez dira kontuan hartuko.

--formatu irteera-formatua

ld objektu fitxategi mota bat baino gehiago onartzen konfiguratzeko. Zure ld modu hau konfiguratuta badago, --oformat aukera erabil dezakezu irteerako objektuaren fitxategiaren formatu bitarra zehazteko. Nahiz eta ld formatu formatu alternatiboak onartzen konfiguratzen direnean, normalean ez duzu zehaztu behar, ld formatu bakoitzaren formatu ohikoena formatu bakoitzeko inprimagailu gisa ekoizteko konfiguratuta egon behar baita. irteera-formatua testu katea da, BFD liburutegiak onartzen duen formatu jakin baten izena. ( Objdump -i formatu bitar erabilgarriak zerrendatu ditzakezu.) "OUTPUT_FORMAT" komandoaren script-a ere irteera formatua zehaztu dezake, baina aukera hau gainidazten du.

-qmagic

Aukera hau ez da kontuan hartuko Linux bateragarritasunerako.

-Qy

Aukera hau SVR4 bateragarritasuna alde batera utzita dago.

--relax

Makina menpeko efektuekin duen aukera. Aukera hau helburu gutxi batzuetan bakarrik onartzen da.

Plataforma batzuetan, --relax aukerek optimizazio globalak egiten dituzte, bihurgailuak programan aurrez erabakitzen duenean, esate baterako, helbide moduko lasaigarriak eta irteera-objektuko fitxategiko argibide berriak sintetizatzeko.

Plataforma batzuetan, esteka horri esker, optimizazio global horiek ondoriozko exekutagarriaren arazoen sinboloa ezinezkoa izan daiteke. Hau Matsushita MN10200 eta MN10300 prozesadoreen familia da.

Onartzen ez diren plataformetan, --relax onartzen da, baina ez zaio jaramonik egiten.

--retain-symbols-file filename

Fitxategi- izenaren fitxategian zerrendatutako sinboloak bakarrik gorde, gainerako guztiak baztertuz. filename fitxategi laua da, sinbolo bakoitzeko lerro bakoitzeko. Aukera hau bereziki erabilgarria da inguruneetan (adibidez, VxWorks), non globalki ikuraren taula handi bat pixkanaka pilatzen den, denbora errealean gordetzeko.

--retain-symbols-file ez da baztertutako sinboloak, edo lekualdaketa behar diren sinboloak baztertzen.

Bakarrik zehaztu dezakezu --rekin-ikurrak-fitxategia behin komando lerroan. Gainditzen ditu -s eta -S .

-rpath dir

Gehitu direktorioa runtime liburutegien bilaketaren bideora. Hau erabiltzen da objektu partekatuak dituen ELFezinezko bat lotzen denean. All- rpath argumentuak concatenated eta runtime linker gainditu, horrek erabiltzen ditu partekatutako objektu kokapena exekutatzeko. Erreputazio- aukera ere erabiltzen da objektu partekatuak behar diren partekatutako objektuak estekatzean; ikus -rpath-link aukeraren deskribapena. -Rpath ez bada erabiltzen ELF exekutagarri bat estekatzean, "LD_RUN_PATH" ingurunearen edukia erabiliko da definituta badago.

The- rpath aukera SunOS-n ere erabil daiteke. Lehenespenez, SunOS-en, estekatzailearen bidez, bilaketa-adabaki bat egingo du -L aukeren araberakoa izango da. Erreprodukzio- aukera bat erabiltzen bada, exekuzio-bilaketaren bide-bidea erabiliko da soilik -rpath aukerak erabiliz, -L aukerak alde batera utziz. Honek baliagarria izan daiteke gcc-ren bidez, hau da, NFS muntatutako fitxategi-sistemetan egon daitezkeen hainbat L- aukerak gehitzen ditu.

Beste ELF lokailuei bateragarri egiteko, -R aukera direktorio-izen bat jarraitzen bada, fitxategi izen bat baino gehiago, -rpath aukera gisa tratatuko da.

-rpath-link DIR

ELF edo SunOS erabiltzean, liburutegi partekatu batek beste bat eska dezake. Horrek gertatzen du "ld-shared" estekak liburutegi partekatua sarrera fitxategietako bat dela.

Loturak menpekotasun hori topatzen duenean estekarik ez partekatu eta ezeztaezina egiten duenean, automatikoki saiatuko da nahitaez partekatutako liburutegia aurkitzeko eta estekan sartzeko, esplizituki ez bada. Kasu horretan, -rpath-link aukera bilaketak egiteko lehen direktorio-multzoa zehazten du. The -rpath-link aukera direktorioen sekuentzia bat zehaztu dezake, bai kolonizatzaileek bereizitako izenen zerrenda zehaztuz, edo hainbat aldiz agertuz.

Aukera hau kontu handiz erabili behar da, liburutegi partekatu batean konpilatu ahal izan den bilaketa-bideak gainidazten dituelako. Kasu horietan, nahitaez, lasterbideen estekatzailearen bidez egiten den bilaketa bide bat erabiltzea posiblea da.

Lotzaileak bilaketa-bide hauek erabiltzen ditu beharrezkoak diren liburutegiak partekatzeko.

1.

Bide-loturak aukeratutako zehaztutako direktorioak.

2.

Bide- aukeren bidez zehaztutako edozein direktorio. Arrazoia eta -rpath-link arteko aldea da -rpath aukerak zehazten diren exekutagarrian eta exekuzioan erabiltzen diren zehaztutako direktorioetan, berriz, -rpath-link aukera soilik lotura estua da. Jatorrizko estekatzailearentzako soilik da.

3.

ELF sistema batean, -rpath eta "rpath-link" aukerak ez badira erabili, bilatu "LD_RUN_PATH" ingurunearen edukia. Jatorrizko estekatzailearentzako soilik da.

4.

SunOS zerbitzuan, -rpath aukerarik ez balego , bilatu L- aukerak erabiliz zehaztutako edozein direktorio.

5.

Jatorrizko estekatzaileari, "LD_LIBRARY_PATH" ingurunearen edukia.

6.

Jatorrizko ELF estekatzaileari, partekatutako liburutegiko "DT_RUNPATH" edo "DT_RPATH" direktorioek berek eskatzen dituzten liburutegi partekatuetan bilatuko dira. "DT_RPATH" sarrerak ez dira kontuan hartuko "DT_RUNPATH" sarrerak badituzte.

7.

Direktorioak lehenetsiak, normalean / lib eta / usr / lib .

8.

ELF sistemako jatorrizko lokatzailearentzat, fitxategia /etc/ld.so.conf existitzen bada, fitxategi horretan aurkitutako direktorioen zerrenda.

Beharrezko partekatutako liburutegia aurkitu ezean, loturak abisu bat bidaliko du eta jarraitu esteka honekin.

-shared

-Bshareable

Sortu liburutegi partekatu bat. Une honetan ELF, XCOFF eta SunOS plataformetan soilik onartzen dira. SunOS-en, loturak automatikoki sortuko ditu liburutegi partekatu bat, aukera hori ez bada erabiltzen eta sinboloak ez badira estekan.

--sort-ohikoa

Aukera honek ld ikurrak tamaina arruntean ordenatzen ditu irteerako atal egokietan jartzen dituena. Lehenik eta behin, byte sinbolo guztiak datoz, ondoren, bi byte guztiak, ondoren, lau byte guztiak, eta gero beste guztia. Hau da sinboloen arteko hutsuneak ezartzeko lerrokatze-mugak direla eta.

--split-by-file [ size ]

Antzekoa --split-by-reloc-ek, baina irteera-atal berri bat sortzen du sarrerako fitxategi bakoitzerako. tamaina 1-ko tamainari dagozkion lehenetsiak ematen ez badira.

--split-by-reloc [ count ]

Irteerako fitxategian atal gehigarriak sortzen saiatzen da, fitxategian irteera bakarra atalek ez duten erlojuak baino gehiago edukitzea. Hau erabilgarria da COFF objektuaren fitxategiaren formaturako denbora errealeko kernel batzuetan deskargatzeko erraldoi diren fitxategiak sortzeko. COFFcannot-ek 65535 lekualdaketa baino gehiago ordezkatzen ditu atal bakarrean. Kontuan izan hau ez duela objektuaren fitxategi formatuekin funtzionatuko, atal arbitrarioak ez dituztenak onartzen. Lotzaileek ezingo dituzte banakako sarrerako atalak birbanatu, beraz, sarrerako atal bakar batek lekualdatze ugari baino gehiago baditu, irteera-atalak lekualdaketa asko izango ditu. 32768 zenbakiarekin balio lehenetsiak.

--stats

Estekaurreko funtzionamenduari buruzko estatistikak kalkulatu eta erakutsi, adibidez exekuzio-denbora eta memoria-erabilera.

--traditional formatu

Helburu batzuetarako, ld- ren irteera desberdina da, nolabait esateko, existitzen den estekatzailearen irteeratik. Aldaketa honek ld- k formatu tradizionala erabiltzeko eskatzen du.

Adibidez, SunOS-en, ld konbinazio bikoitza sarrerak konbinatzen ditu klaseko taulan. Irteerako fitxategi baten tamaina murrizteko, arazketa-informazio osoa 30 ehuneko baino gehiagokoa da. Zoritxarrez, SunOS "dbx" programak ezin du programa hau ("gdb" ez du arazorik). Formatu tradizionaleko moduluak ld esaten dio sarrera bikoiztuak ez konbinatzeko.

--section-start section name = org

Aurkitu irteerako fitxategian atal bat orgn emandako helbide absolutuan. Aukera hau erabili ahal izango duzu hainbat aldiz beharrezkoa komando-lerroan atal anitz aurkitzeko. org hamaseitar oso osokoa izan behar du; estekatzaile batzuekin bateragarritasunerako, balio hamaseitarrekin normalean lotutako 0x oinarriak alda ditzakezu. Oharra: ez dago atal izenaren arteko zuriunerik, zeinu berdina (`` = '') eta org .

-Tbss org

-Tdata org

-Testua org

Erabili org gisa hasierako helbidea --- hurrenez hurren --- "bss", "datuak", edo irteerako fitxategiaren "testu" segmentua. org hamaseitar oso osokoa izan behar du; estekatzaile batzuekin bateragarritasunerako, balio hamaseitarrekin normalean lotutako 0x oinarriak alda ditzakezu.

--dll-xeheak

--verbose

Erakutsi ld bertsioaren zenbakia eta lotzen dituen emulazioen zerrenda. Erakutsi zein sarrera fitxategiak ireki eta ezin dira ireki. Lotzailea lotzen duen estekatzailearen script-a erakutsi.

--version-script = bertsio- script fitxategia

Zehaztu bertsio script baten izena lotzailea. Hau normalean erabiltzen da biblioteka partekatuak sortzeko, liburutegiaren bertsioaren bertsioari buruzko informazio osagarria zehazteko. Aukera hau Liburutegi konpartituek onartzen dituzten ELF plataformen esanahia besterik ez da.

--warn-ohikoa

Abisatu ohiko ikurra beste ikur komun batekin edo sinboloen definizio batekin konbinatuta. Unix lokailuei eskerrak pixka bat desegokiak dira, baina beste sistema eragile batzuek ez dute loturarik. Aukera honek aukera ematen du ikur globalak konbinatuz gero arazo larriak aurkitzeko. Zoritxarrez, zenbait C liburutegiek praktika hau erabiltzen dute, liburutegietan eta programetan sinboloei buruzko ohar batzuk lor ditzakezula.

Hiru motako sinbolo orokorrak daude, adibidez C adibideak erabiliz:

int i = 1;

Definizioa, irteerako fitxategiaren hasierako datuen atalean.

kanpoko int;

Ez du zehaztutako erreferentzia bat, eta horrek ez du espazioa esleitzen. Ezarpen bat edo ikur komun bat egon behar du aldagaiak nonbait.

int i;

Ohiko ikurra. Bakarrik badago (bat edo gehiago) aldagai bateko sinbolo arruntak, irteerako fitxategiaren hasierako unitateen area doa. Lotzailea bateko sinbolo bat baino gehiago bateratzen du aldagai berdina ikur bakar batean. Tamaina desberdinak badira, tamaina handiena hartzen du. Konektoreak sinbolo bat bihurtzen du deklarazio batean, baldin eta aldagai berdina badago.

Thewar common-ek aukera ematen du bost aditz mota. Abisu bakoitzak lerro pare bat osatzen du: lehenengoak aurkitutako ikurrak deskribatzen ditu eta bigarrenak izen bereko aurrez aurreko ikurrak deskribatzen ditu. Bi edo bi sinboloak sinbolo komun bat izango dute.

1.

Sinbolo arrunta erreferentzia bihurtzeko, sinboloaren definizioa dagoeneko badago.

(): abisua: '' komunean definizioz aldatutako (
): abisua: definitu da hemen

2.

Sinbolo arrunta erreferentzia bihurtzeko, sinbolo berriagoa aurkitzeko. Aurreko kasua bezalakoa da, sinboloak beste ordena batean izan ezik izan ezik.

(
): abisua: ` 'definizioa () gainidatzearen definizioa: abisua: common hemen dago

3.

Sinbolo arrunt bat aurreko ikur berdinarekin sinbolo komun bat eratuz.

(
): abisua: '' komuneko hainbat (): abisua: aurreko common hemen dago

4.

Sinbolo komun bat aurreko ikur nagusi handiagoarekin elkartuz.

(
): warning: common (
) overridden by ` ': warning: common larger is here

5.

Sinbolo komun bat sinbolo arrunt txikiagoarekin konbinatzen. Aurreko kasua bezalakoa da, sinboloak beste ordena batean izan ezik izan ezik.

(): abisua: '' arrunta ' (
) komun txikiagoa gainidazten du: abisua: txikiagoak komunak hemen daude

--warn-eraikitzaileak

Abisatu edozein eraikitzaile orokor erabiltzen badituzu. Hau erabilgarria da objektu fitxategi formatu gutxientzat. COFF edo ELF bezalako formatuetarako, linkatzaileak ezin du eraikitzaile globalen erabilera detektatu.

--warn-anitzeko gp

Abisatu irteerako fitxategi batean behin baino gehiagotan erakuslearen balioak behar diren. Hau prozesadore jakin batzuentzat bakarrik esanguratsua da, esate baterako, Alpha. Zehazki, prozesadore batzuek konstante handiak jarri dituzte atal berezi batean. Erregistro berezi bat (erakusle orokorra) atal honen erdialdean kokatzen da, beraz, konstanteak modu eraginkorrean kargatu ahal izango dira base-erregistroaren helbide erlatiboaren bidez. Base-erregistro erlatiboa moduaren desplazamendua finkoa eta nahiko txikia denez (adibidez, 16 bit), etengabeko igerilekuaren tamaina maximoa mugatzen du. Horrela, programa handietan, askotan erakusleen balio globalak erabili behar dira konstante posible guztiak aurre egiteko. Aukera honek kasu honetan gertatzen den abisua sor dezake.

--warn-behin

Behin sinatu gabeko sinbolo bakoitzeko behin bakarrik ohartarazten du, horri dagokion modulu bakoitzeko behin baino gehiagotan.

--warn-atal-lerrokatzea

Abisatu irteerako atal baten helbidea lerrokatzeagatik aldatu delako. Normalean, lerrokatzea sarrerako atal batek ezarriko du. Helbidea aldatu egingo da soilik esplizituki zehazten ez bada; hau da, "SECTIONS" komandoak ez badu atalaren hasierako helbidea zehazten.

--whole-artxiboa

Komando lerroan aipatzen den artxibo bakoitzerako, " full-archive" aukeraren ondoren, artxiboko objektu bakoitza artxiboan estekan sartu behar da, artxiboaren bila derrigorrezko objektu fitxategientzako. Hau normalean fitxategi artxibo bat biltegiratutako liburutegi batean bihurtzeko erabiltzen da, eta ondorioz, objektu bakoitza partekatutako liburutegian sartu behar da. Aukera hau behin baino gehiagotan erabil daiteke.

Aukera hau erabiltzerakoan bi aukera daude gcc-tik: Lehenik eta behin, gcc-k ez du aukera honi buruz ezagutzen, beraz -Wl, -whole-archive erabili behar duzu. Bigarrenik, ez ahaztu erabiltzea -Wl, -no-whole-archive zure artxiboen zerrendaren ondoren, gcc-k bere fitxategi-zerrenda bere esteka estekan gehituko duelako eta agian ez duzu bandera hau ere eragingo.

- korritze ikurra

Erabili wrapper funtzioaren ikurra . Ikurrez definitutako edozein erreferentzia "__ wrap_symbol" konponduko da. "__real_symbol" erreferentzia zehaztugabea sinbolizatuko da .

Honek sistema-funtzio batentzako itzulbiratu ahal izateko erabil daiteke. Biltegiratze funtzioa «__wrap_symbol» deitu beharko litzateke. Sistema-funtzioa deitzeko nahi baduzu, "__ real_symbol" deitu beharko luke.

Hemen adibide hutsala da:

void * __wrap_malloc (int c) {printf ("malloc izenekoarekin% ld \ n" rekin, c); itzuli __real_malloc (c); }

Fitxategi honekin beste kode bat lotzen baduzu --wrap malloc erabiliz, orduan "malloc" deiak "__wrap_malloc" funtzioari deitzen dio. "__real_malloc" en "__wrap_malloc" deia "malloc" funtzioari deitzen diogu.

Baliteke "__real_malloc" funtzio bat ere eskaintzea, beraz, lotura estandarraren bidez estekak arrakasta izango duela. Hori eginez gero, ez duzu "__ real_malloc" definizioa jarri "__wrap_malloc" fitxategi berean; Horrela bada, mahaigainek deia ebatzi ahal izango dute lotesleak "malloc" biltzeko aukera izan dezan.

Enable-new-dtags

--disable-new-dtags

Lotzaile honek ELFen etiketa dinamiko berriak sor ditzake. Baina ELF sistemen zaharrek agian ez dituzte ulertzen. Espezifikatzen baduzu --enable-new-dtags , etiketa dinamikoak beharrezkoak izango dira. Ezartzen baduzu --disable-new-dtags , etiketa dinamiko berriak ez dira sortuko. Lehenespenez, etiketa dinamiko berriak ez dira sortu. Kontutan izan aukera horiek soilik erabilgarri egongo direlaELF sistemetarako.

I386 PE estekaak onartzen du -shared aukera, horrek irteera dinamikoki lotutako liburutegia (DLL) bat eragiten du, exekutagarri normal baten ordez. "* .dll" irteera izendatu beharko zenuke aukera hau erabiltzen duzunean. Horrez gain, estekatzailearen "*. Def" fitxategiak guztiz onartzen ditu, estekatzailearen komando lerroan zehaztutako objektuaren fitxategi bat bezala (egia esan, sinboloak esportatzen dituzten artxiboak baino lehenago sartu behar dira, objektu objektu normal bat bezala).

Helburu guztietarako aukeren gainaz gain, i386 PE estekatzaileek i386 PE helburuan espezifikatutako komando lerroko aukera osagarriak onartzen dituzte. Balioak hartzen dituzten aukerak bere baloreetatik bereiz daitezke espazio bat edo berdin zeinu bat.

--add-stdcall-alias

Emandako baldin badago, sinboloak stdcall atzizkiarekin (@ nn ) esportatuko dira, eta baita atzizkien atzizkiarekin ere.

--base-file fitxategia

Erabili fitxategi bat dlltool- ekin DLL sortzeko behar diren lekualdatze guztien oinarrizko helbideak gordetzeko fitxategi gisa.

--dll

Sortu DLL bat exekutagarri erregular baten ordez. Ere erabili ahal izango duzu -parted edo zehaztu "BIBLIOTECA" ".def" fitxategi jakin batean.

Enable-stdcall-fixup

--disable-stdcall-fixup

Loturak ezin badu ebatzi sinbolo bat aurkitzen badu, `` fuzzy linking '' saiatuko da sinboloaren izenaren (cdecl vs stdcall) formatuan baino ezberdina den ikur bat bilatzen saiatuko da eta sinboloa ebazten du lotuz. partidarako. Adibidez, "_foo" definitu gabeko sinboloa "_foo @ 12" funtzioarekin lotu daiteke edo "_bar @ 16" ez definitutako sinboloa "_bar" funtzioarekin lotu daiteke. Konektoreak hau egiten duenean, ohartarazten du ohartarazpena, loturarik ez lukeen arren lotzen, baina batzuetan hirugarrenen dll-ak sortutako liburutegiak inportatu ditzake. Erabilgarria izan daiteke. Zehaztu --enable-stdcall-fixup badaukazu , funtzio hori guztiz gaituta dago eta abisuak ez dira inprimatuta. Ezartzen baduzu --disable-stdcall-fixup , funtzio hori desgaituta dago eta desadostasunak hauek erroreak direla uste da.

--export-all-ikurrak

Datuak ematen badituzu, DLL bat esportatuko duten DLL bat eraikitzeko erabilitako objektuen ikur global guztiak DLL bidez esportatuko dira. Kontutan izan hau lehenetsia dela, bestela ezingo lirateke esportatutako sinboloak izan. Sinboloak DEF fitxategien bidez esplizitoki esportatzen direnean edo inplizituki esportatutako funtzioen atributuen bidez, lehenetsia ez da beste ezer esportatzea aukera hau eman ezean. Kontutan izan "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" eta "impure_ptr" sinboloak ez dira automatikoki esportatuko. Gainera, DLL beste inportatutako sinboloak ez dira berriro esportatuko, ezta DLLren barneko diseinua zehazten duten sinboloak ere, esate baterako, "_head_" edo "_iname" -ekin amaitutakoak. Gainera, "libgcc", "libstd ++", "libmingw32" edo "crtX.o" -ko sinboloak ez dira esportatuko. "__rtti_" edo "__builtin_" izenarekin hasten diren sinboloak ez dira esportatuko, C ++ DLL laguntzarekin. Azkenik, ez dira esportatu ez diren cygwin-pribatu sinboloen zerrenda zabala (jakina, hau da Cygwin helburuak lortzeko DLLak eraikitzen).

Hauek cygwin-baztertzen dira: "_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 ", eta" ingurune ".

- Exclude-symbols symbol , symbol , ...

Automatikoki esportatu behar ez diren ikurren zerrenda zehazten du. Sinboloen izenak komaz edo koloniz mugatu daitezke.

--exclude-libs lib , lib , ...

Liburutegi-liburutegien zerrenda zehazten du, zeinak ikurrak automatikoki esportatu ezin diren. Liburutegien izenak komaz edo kolonizatuta egon daitezke. "--exclude-libs ALL" zehaztea ez da sinboloak esportazio automatikoen artxibo-liburutegi guztietan baztertzen. Sinboloak .def fitxategian zerrendatuta daude oraindik esportatuta, aukerarik izan gabe.

--file-lerrokatzea

Zehaztu fitxategia lerrokatzea. Fitxategian atalak beti izango dira zenbakien multiploak diren fitxategi-konpasetan. 512. zenbakiaren lehenetsiak.

- Erreserba ezazu

- Erreserba ezazu , konpromisoa hartu

Zehaztu memoria kopuru hori erreserbatzeko (eta, bestela, konpromisoa) programa honen zeurea gisa erabiltzeko. Lehenetsia 1Mb erreserbatuta dago, 4K konpromisoa hartzen du.

--image-base balioa

Erabili zure programaren edo dll oinarrizko helbidearen balioa . Hau da programa edo dll kargatzen denean zure memoria-kokapena txikiena izango da. Zure dlls-ren errendimendua berritzeko eta hobetzeko beharra murrizteko, bakoitzak oinarrizko helbide bakarra eduki beharko luke eta ez da beste dll-ak gainjartzen. Lehenetsia 0x400000 exekutagarrientzat da eta 0x10000000 dllsetarako.

--kill-tan

Emandako bada, stdcall atzizkiak (@ nn ) ikurrak kenduko dira esportatu aurretik.

--major-image-version value

'`Irudien bertsioaren' 'kopuru handiena ezartzen du. 1 aurredefinitutakoa.

--major-os-bertsioaren balioa

`` Os bertsioaren zenbakia '' ezartzen du. 4 balio lehenetsiak.

--major-subsystem-version value

`` Subsistema bertsioa '' kopuru handia ezartzen du. 4 balio lehenetsiak.

--minor-image-version value

'`Irudien bertsioaren' 'txikien kopurua ezartzen du. 0 balio lehenetsiak.

--minor-os-bertsioaren balioa

`` Os bertsioaren txikien kopurua ezartzen du ''. 0 balio lehenetsiak.

--minor-subsistema-bertsioaren balioa

`` Subsistema bertsioa '' txikiaren zenbakia ezartzen du. 0 balio lehenetsiak.

--output-def fitxategia

Lotzailea fitxategi- fitxategia sortuko du. Honek esteka bat sortuko duen DLLari dagokion DEF fitxategia edukiko du. DEF fitxategi hau ("* .def" deitu beharko litzateke) "dlltool" rekin inportazio liburutegia sortzeko erabil daiteke edo automatikoki edo inplizituki esportatutako sinboloen erreferentzia gisa erabil daiteke.

--out-implib fitxategia

Lotzaileak loturarik sortzen duen DLLari dagokion inportazio lib bat edukiko duen fitxategi- fitxategia sortuko du. Inportazio lib horrek ("* .dll.a" edo "* .a" deitu beharko litzaioke bezeroak DLL sortutakoaren aurka lotzeko; portaera honek "dlltool" inportatu dezake liburutegien sorreraren urrats bat bereizteko.

Enable-auto-image-base

Automatikoki aukeratu DLL fitxategien irudien oinarria, "--image-base" argumentua erabiliz zehazten ez bada behintzat. Dll-etik sortutako hash bat erabiliz, DLL bakoitzeko irudi-oinarriak sortzeko, programaren exekuzioa saihestu dezaketen memoria-talkak eta lekualdatzeak.

--disable-auto-image-base

Ez automatikoki sortu irudiaren oinarri bakarra. Erabiltzaileak zehaztutako irudiaren oinarria ("--image-base") ez badago, erabili plataforma lehenetsia.

--dll-search-prefix katea

Dinamikoki dll-era inportatzeko liburutegi bat inportatu gabe, bilatu " .dll" "lib .dll" hobespenera. Portaera honek `` subplatforms '' hainbat atalentzako DLL fitxategiak bereizten ditu: native, cygwin, uwin, pw, etab. Adibidez, cygwin DLLk normalean "--dll-search-prefix = cyg" erabiltzen du.

Enable-auto-inportazio

Egin "_symbol" lotura sofistikatua "Datuen DATUen inportazioetarako" "__imp__symbol" izeneko DATUen inportazioetarako eta sinatu behar diren sinboloak sortu behar dituzu inportazio liburutegiak DATA esportatzeko. Hau orokorrean "lan egin" --- baina batzuetan mezu hau ikus dezakezue:

"aldagai" "ezin da inportatu automatikoki. Irakurri dokumentazioa" --enable-auto-import "fitxategirako xehetasunetarako."

Mezu honek zenbait (sub) adierazpenek azken bi konstanteen batuketa ematen duten helbide bat sartzen da (Win32 inportazio taulak bakarrik onartzen dute). Hau gerta daitekeen kasuetan, DLL batetik inportatutako aldagai estrukturiko kideen eremuak sartzen dira, baita DLL baten inportatutako array aldagai konstante bat erabiliz. Aldagai anitzeko aldagai (matrizeak, egiturak, luze luzeak, eta abar) akatsen egoera hau abiarazi dezake. Hala ere, esportatutako fitxategi aldakorreko datu mota zehatza edozein dela ere, beti detektatuko da, abisua igorri eta irten.

Zailtasun hori konpontzeko hainbat modu daude, esportatutako aldagaiaren datu mota kontuan hartu gabe:

Modu bat da --enable-runtime-pseudo-reloc switch erabiltzea. Honek zure bezero-kodea erreferentziak egokitzeko eginbeharra uzten du exekuzio-inguruneetarako, beraz, metodo honek denbora errealean ingurumen-propietateak funtzio hau onartzen duenean bakarrik funtzionatzen du.

Bigarren irtenbide bat da "konstanteak" aldagai bat izatea --- hori da, ezezaguna eta ez-optimizagarria konpilatzeko denboran. Arrayentzat, bi aukera daude: a) indxee (arrayaren helbidea) aldagai bat egitea, edo b) "konstante" indizea aldagai bat egiteko. Horrela:

external type kanpoko_array []; extern_array [1] -> {volatile type * t = extern_array; t [1]}

edo

external type kanpoko_array []; extern_array [1] -> {volatile int t = 1; kanpoko_array [t]}

Egitura (eta beste hainbat datu mota baino gehiago), egitura bera (edo luze luzea, edo ...) aldagai bakarra da:

external struct s extern_struct; external_struct.field -> {volatile struct s * t = & extern_struct; t> eremua}

edo

external long external_ll luzea; extern_ll -> {volatile long long * local_ll = & extern_ll; * local_ll}

Zailtasun horri aurre egiteko hirugarren metodo bat "auto-inportatzea" uzteko sinboloagatik uztea eta "__declspec (dllimport)" markatzea da. Dena den, praktikan konpilazio-denbora # definiziorik erabiltzen baduzu, DLL bat eraikitzen ari zaren ala ez jakiteko, eraikitzeko bezeroaren kodea DLL-ra estekora edo liburutegi estatiko batera eraikitzeko edo lotzeko besterik ez duzu. "Zuzeneko helbidea konpentsazio etengabearekin" arazoarekin konpontzeko hainbat modu bereizteko, mundu errealeko ohiko erabilera kontuan hartu beharko zenuke:

Original:

--foo.h kanpoko int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Irtenbidea 1:

--foo.h kanpoko int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {/ * Laburpena win32 eta cygwin da; ez "optimizatu" * / volatile int * parr = arr; printf ( "% d \ n", PARR [1]); }

2. irtenbidea:

--foo.h / * Oharra: auto-esportazioa bere gain hartzen da (ez __declspec (dllexport)) * / #if (definitutakoa (_WIN32) || definitua (__ CYGWIN__)) eta && (! FOO_BUILD_DLL) definitutakoa (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Arazo hau ekiditeko laugarren modu bat zure liburutegia berriz kodetzeko interfaze funtzional bat erabiltzea baino ez da datuen interfazea, kontrako aldagaientzat (adib. Set_foo () eta get_foo () accessor funtzioak).

--disable-auto-inportazio

Ez saiatu "_symbol" sophisticalted lotzen "Datuen inportazioak" DLL-etik "__imp__symbol" -ri lotzeko.

Enable-exekuzio-sasi-reloc

Zure kodea badago --enable-auto-import atalean deskribatutako esamoldeak, hau da, desplazamendu ez-zeroarekin DATA inportazioak, korronte honek 'runtime pseudo-relocations' exekuzio-inguruneak erabil ditzake erreferentziak egokitzeko. zure datu pertsonalak bezeroaren kodean.

--disable-exekuzio-sasi-reloc

Ez sortu pseudo lekualdaketarik zero deskonposatu DATUen inportazioen DLLetatik. Hau da lehenetsia.

Enable-extra-pe-arazketa

Erakutsi autoebaluaziorako ikurrarekin erlazionatutako arazketa-informazio gehigarria.

--section-lerrokatzea

Atal lerrokatzea ezartzen du. Memoriaren atalak zenbaki hori baino gehiagotan dauden helbideetan hasiko dira beti. 0x1000 lehenetsiak.

- Erreserba pila

- Stack erreserba , konpromisoa

Zehaztu memoria kopuru hori erreserbatzeko (eta, bestela, konpromisoa) programa honen pilaketa gisa erabiltzeko. Lehenetsia 2Mb erreserbatuta dago, 4K konpromisoa hartu du.

--subsistema zein

--subsistema : nagusiak

--subsistema : nagusiak . txikiak

Programa exekutatzen duen azpisistema zehazten du. Balio legalak "jatorrizko", "leihoak", "kontsola" eta "posix" dira. Aukeraz gero, subsistema bertsioa ere ezarri dezakezu.

Garrantzitsua: erabili man komandoa ( % man ) komando bat nola erabiltzen den zure ordenagailuan.