Linukso / Unikso Komando: Id

NAME

ld - Uzante LD , la ligilon GNU

SYNOPSIS

ld [ opcioj ] objfile ...

PRISKRIBO

ld kombinas multajn objektojn kaj arkivajn dosierojn , translokiĝas siajn datumojn kaj ligas simbolajn referencojn. Kutime la lasta paŝo en kompilaĵo de programo estas kuri d .

ld akceptas la dosierojn de Linker Command Language skribitaj en superset de la sintakso de AT & T's Link Editor Command Language, por disponigi eksplicitan kaj tutan kontrolon pri la ligo.

Ĉi tiu paĝo ne priskribas la komandlingvon; vidu la URL en "info", aŭ la manlibron ld: la GNU- ligilon, por kompletaj detaloj pri la komandlingvo kaj pri aliaj aspektoj de la ligilo de GNU.

Ĉi tiu versio de ld uzas la ĝeneralajn celojn de BFD-bibliotekoj por funkcii en objekto-dosieroj. Ĉi tio permesas ld legi, kombini kaj skribi objekto-dosierojn en multaj malsamaj formatoj --- ekzemple COFF aŭ "a.out". Malsamaj formatoj povas esti ligitaj kune por produkti ajnan haveblan specon de objekto-dosiero.

Aparte de ĝia fleksebleco, la GNU-ligilo estas pli helpema ol aliaj ligiloj en havigo de diagnostika informo. Multaj ligantoj forlasas ekzekuton tuj kiam ili renkontas eraron; kiam ajn ebla, ld daŭre ekzekutas, permesante al vi identigi aliajn erarojn (aŭ, en iuj kazoj, por ricevi elsendan dosieron malgraŭ la eraro).

La ligilo de GNU ld signifas kovri ampleksan gamon de situacioj, kaj esti tiel kongrua kiel eble kun aliaj ligiloj. Kiel rezulto, vi havas multajn elektojn por kontroli sian konduton.

Obloj

La ligilo subtenas multoblajn komandliniojn , sed en reala praktiko malmultaj el ili estas uzataj en iu ajn kunteksto. Ekzemple, ofta uzo de ld estas ligi normajn Uniksajn dosierojn en normo, subtenata Unikso-sistemo . En tia sistemo, ligi dosieron "hello.o":

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

Ĉi tio diras ke ld produktos dosieron nomitan eligo kiel rezulton de ligo de la dosiero "/lib/crt0.o" kun "hello.o" kaj la biblioteko "libc.a", kiu venos el la normaj serĉaj dosierujoj. (Vidu la diskuton de la -l opcio sube.)

Iuj el la komandliniaj opcioj al ld povas esti specifitaj en iu ajn punkto de la komandlinio. Tamen, ebloj, kiuj rilatas al dosieroj, kiel -l-T , kaŭzas la dosieron legi ĉe la punkto, en kiu la opcio aperas en la komandlinio, rilate al la objekto dosieroj kaj aliaj dosieraj elektoj. Repektaj ne-dosieraj ebloj kun malsama argumento ankaŭ ne plu efikos, aŭ anstataŭos antaŭajn eventojn (tiujn pli maldekstre sur la komandlinio) de tiu opcio. Ebloj kiuj povas esti signife specifitaj pli ol unufoje rimarkas en la priskriboj sube.

Ne-opcionaj argumentoj estas objekto dosieroj aŭ arkivoj, kiuj devas esti ligitaj kune. Ili povas sekvi, antaŭeniri, aŭ esti miksitaj kun komandlinioj, escepte, ke objekto-dosiero eble ne estu inter opcio kaj ĝia argumento.

Kutime la ligilo estas alvokita kun almenaŭ unu objekto-dosiero, sed vi povas specifi aliajn formojn de binaraj enaj dosieroj uzante -l , -R , kaj la skripta komandlingvo. Se neniu dosieraj dosieroj estas tute specifitaj, la ligilo ne produktas ajnan eliron, kaj temas pri la mesaĝo Neniu eniga dosiero .

Se la ligilo ne povas rekoni la formaton de objekto-dosiero, ĝi supozos, ke ĝi estas ligilo-skripto. Skripto specifita de ĉi tiu maniero pliigas la ĉefan ligilon-skripton uzatan por la ligo (aŭ la defaŭlta ligilo-skripto aŭ la unu specifita per uzado -T ). Ĉi tiu funkcio permesas la ligilon ligi kontraŭ dosiero, kiu ŝajnas esti objekto aŭ arkivo, sed efektive simple difinas iujn simbolojn, aŭ uzas "INPUT" aŭ "GRUPO" por ŝarĝi aliajn objektojn. Notu, ke specifa skripto tiel nur pliigas la ĉefan ligilon-skripton; uzu la -T- opcion por anstataŭigi la defaŭltan ligilon-skripton tute.

Por ebloj kies nomoj estas sola litero, ebloj argumentoj devas aŭ sekvi la opcion leteron sen interrompi la spacon, aŭ esti donitaj kiel apartaj argumentoj tuj sekvante la eblon, kiu postulas ilin.

Por ebloj kies nomoj estas multoblaj literoj, ĉu unu dash aŭ du povas antaŭi la opcionnomon; ekzemple, -trace-simbolo kaj -trace-simbolo estas ekvivalentaj. Noto - ekzistas unu escepto al ĉi tiu regulo. Multoblaj leteraj ebloj, kiuj komencas kun pli malalta kazo 'o' nur povas esti preterpasitaj per du paŝoj. Ĉi tio estas malpliigi konfuzon kun la -o- opcio. Do ekzemple - _omagic_ aranĝas la eliga dosiernomo al la magio dum - _omagic_ aranĝas la NMAGIC-flagon sur la eligo.

Argumentoj al pluraj-leteraj ebloj devas esti apartigitaj de la elekta nomo per egala signo, aŭ estu donitaj kiel apartaj argumentoj tuj sekvante la eblon, kiu postulas ilin. Ekzemple, --trace-symbol foo kaj --trace-symbol = foo estas ekvivalentaj. Unikaj sigloj de la nomoj de multoblaj literoj estas akceptitaj.

Notu - se la ligilo estas alvokita nerekte, per kompililo-ŝoforo (ekz. Gcc ), tiam ĉiuj opcioj de la komandlinioj de ligo estu prefiksitaj per -Wl (aŭ ĉio, kio taŭgas por la aparta tradukilo-ŝoforo) kiel ĉi tiu:

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

Ĉi tio estas grava, ĉar alie la tradukilo-programo povas silente faligi la ligilojn, rezultigante malbonan ligon.

Jen tablo de la ĝeneralaj komandlinaj ŝaltiloj akceptitaj de la ligilo GNU:

-a ŝlosilvorto

Ĉi tiu opcio estas subtenata por kongruo de HP / UX. La ŝlosila argumento devas esti unu el la ŝnura arkivo , dividita , aŭ defaŭlte . -aarkivo estas funkcie ekvivalenta al -Bstatic , kaj la aliaj du ŝlosilvortoj funkcie estas ekvivalentaj al -Bininámica . Ĉi tiu opcio povas esti uzata iam ajn.

- Arkitekturo

--architekturo = arkitekturo

En la nuna liberigo de ld , ĉi tiu opcio estas utila nur por la familio de arkitekturoj Intel 960. En tiu ld- agordo, la arkitektura argumento identigas la apartan arkitekturon en la 960-familio, ebligante iujn protektatojn kaj modifante la arkivan serĉilon.

Futuraj versioj de PD povas subteni similan funkciojn por aliaj arkitekturaj familioj.

-b- eniga formato

--format = enigo-formato

D povas esti agordita por subteni pli ol unu specon de objekto-dosiero. Se via ld estas agordita de ĉi tiu maniero, vi povas uzi la -b- opcion por specifi la binaran formaton por eniga objekto dosieroj, kiuj sekvas ĉi tiun opcion en la komandlinio. Eĉ kiam ID estas agordita por subteni alternativajn objektajn formatojn, vi kutime ne bezonas specifi ĉi tion, ĉar ld devus esti agordita por atendi kiel defaŭlta eniga formato la plej kutiman formaton en ĉiu maŝino. input-format estas teksto-kordo, la nomo de aparta formato subtenata de la BFD-bibliotekoj. (Vi povas listigi la disponeblaj duaj formatoj kun objdump -i .)

Vi eble volas uzi ĉi tiun opcion se vi ligas dosierojn kun nekutima binara formato. Vi ankaŭ povas uzi -bŝalti formatojn eksplicite (kiam ligo de objekto-dosieroj de malsamaj formatoj), per -b -forma formato antaŭ ĉiu grupo de objekto-dosieroj en aparta formato.

La defaŭlta formato estas prenita de la media variablo "GNUTARGET".

Vi povas ankaŭ difini la eniga formato de skripto, uzante la komandon "TARGET";

-c MRI-komandilo

--mri-script = MRI-komandofilo

Por kongruo kun ligiloj produktitaj de MRI, ld akceptas skripton-dosierojn skribitajn en alterna, limigita komandlingvo, priskribita en la sekcio de GNU-Kongrua Skripta dosieroj de GNU-ld-dokumentado. Enkonduku MRI-skripton-dosierojn kun la opcio -c ; uzu la -T- opcion por kuri ligilkriptoj skribitajn en la ĝenerala intenco ld- scriptinglingva lingvo. Se MRI-cmdfile ne ekzistas, ld serĉas ĝin en la dosierujoj specifitaj per ajn -L- ebloj.

-d

-dc

-dp

Ĉi tiuj tri ebloj estas ekvivalentaj; Multoblaj formoj estas subtenataj por kongruo kun aliaj ligiloj. Ili atribuas spacon al komunaj simboloj eĉ se translokiga eliga dosiero estas specifita (kun -r ). La skripta komando "FORCE_COMMON_ALLOCATION" havas la saman efikon.

-e eniro

--entry = eniro

Uzu eniron kiel la eksplicitan simbolon por komenca ekzekuto de via programo, prefere ol la defaŭlta enira punkto. Se ne ekzistas neniu simbolo en la eniro , la ligilo provos paroli eniron kiel nombro, kaj uzu tion kiel la enirejo (la nombro estos interpretita en bazo 10; vi povas uzi ĉefan 0x por bazo 16, aŭ ĉefo 0 por bazo 8).

-Kaj

--portporta-dinamika

Kiam kreante dinamike ligita ejektablan, aldonu ĉiujn simbolojn al la dinamika simbolo-tablo. La dinamika simbolo-tablo estas la aro de simboloj, kiuj estas videblaj de dinamikaj objektoj en tempo de ekzekuto.

Se vi ne uzas ĉi tiun opcion, la dinamika simbolo-tablo kutime enhavas nur tiujn simbolojn, kiuj estas referencitaj de iu dinamika objekto menciita en la ligo.

Se vi uzas "dlopen" por ŝarĝi dinamikan celon, kiu devas reagi al la simboloj difinitaj de la programo, prefere ol iu alia dinamika objekto, tiam vi verŝajne bezonos uzi ĉi tiun opcion kiam vi ligas la programon mem.

Vi ankaŭ povas uzi la version-skripton por kontroli kion simboloj estu aldonitaj al la dinamika simbolo-tablo se la eliga formato subtenas ĝin. Vidu la priskribon de --version-script en @ ref {VERSION}.

-EB

Ligu grand-endian objektojn. Ĉi tio tuŝas la defaŭltan formaton.

-EL

Ligu iom-endian objektojn. Ĉi tio tuŝas la defaŭltan formaton.

-f

- nomo de nomo

Kiam kreante ELF-dividita objekto, starigu la internan DT_AUXILIARY-kampo al la specifa nomo. Ĉi tio rakontas al la dinamika ligilo, ke la simbolo tablo de la dividita objekto devas esti uzata kiel helpa filtrilo sur la simbolo-tablo de la nomo de objekto dividita.

Se vi poste ligas programon kontraŭ ĉi tiu filtrila objekto, tiam, kiam vi kuros la programon, la dinamika ligilo vidos la DT_AUXILIARY-kampo. Se la dinamika ligilo solvas ajnajn simbolojn de la filtrila objekto, ĝi unue kontrolos ĉu estas difino en la komuna objekto. Se ekzistas unu, ĝi estos uzata anstataŭ la difino en la filtrila objekto. Nepre necesas la nomo de objekto dividita. Tiel la uzata objekto povas esti uzata por provizi alternativan efektivigon de iuj funkcioj, eble por elpurigado aŭ por maŝina specifa agado.

Ĉi tiu opcio povas esti specifita pli ol unufoje. La DT_AUXILIARY-enskriboj estos kreitaj laŭ la ordo, en kiu ili aperas sur la komandlinio.

-Fa nomo

- nomo de nomo

Kiam kreante ELF-dividita objekto, starigu la internan DT_FILTER-kampo al la specifa nomo. Ĉi tio diras al la dinamika ligilo, ke la simbolo-tablo de la dividita objekto kreata devus esti uzata kiel filtrilo sur la simbolo-tablo de la komuna objekto.

Se vi poste ligas programon kontraŭ ĉi tiu filtrila objekto, tiam, kiam vi kuros la programon, la dinamika ligilo vidos la DT_FILTER-kampo. La dinamika ligilo solvos simbolojn laŭ la simbolo-tablo de la filtrila objekto kiel kutime, sed ĝi fakte ligas la difinojn trovitajn en la dividita objekto. Tiel la filtrila objekto povas esti uzata por elekti subconjunto de la simboloj provizitaj per la objekto.

Iuj pli malnovaj ligiloj uzis la -F- opcion laŭ kompila iloŝranĉilo por specifa objekto-dosiero al ambaŭ eniga kaj eliga objekto-dosieroj. La GNU-ligilo uzas aliajn mekanismojn por ĉi tiu celo: la -b , --format , --oformat- opcioj, la "TARGET" komando en ligilo-skriptoj, kaj la variablo de "GNUTARGET". La GNU-ligilo ignoros la -F- opcion kiam ne kreas ELF-dividitan celon.

-fina nomo

Kiam kreas ELF ejecutebla aŭ dividita objekto, voku NAME kiam la ejektivebla aŭ dividita objekto estas malŝarĝita, fiksante DT_FINI al la adreso de la funkcio. Defaŭlte, la ligilo uzas "_fini" kiel la funkcion por voki.

-g

Ignorita. Provizita por kongruo kun aliaj iloj.

-G valoro

--gpsize = valoro

Ŝanĝu la maksimuman grandecon de celoj por esti optimumigita per la GP-registro por grandeco . Ĉi tio nur signifas por objekto dosieroj kiel MIPS ECOFF, kiu subtenas enmeti grandajn kaj malgrandajn celojn en malsamajn sekciojn. Ĉi tio estas ignorita por aliaj objekto-dosieroj.

-h nomo

-soname = nomo

Kiam kreante ELF-dividita objekto, starigu la internan DT_SONAME-kampo al la specifa nomo. Kiam ejecutable estas ligita kun dividita objekto, kiu havas DT_SONAME-kampo, tiam kiam la ekzekutilo estas kurita, la dinamika ligilo provos ŝarĝi la dividitan celon specifitan de la DT_SONAME-kampo anstataŭ uzi la dosiernomon donitan al la ligilo.

-i

Faru pliiĝan ligon (same kiel opcion -r ).

-inita nomo

Kiam kreas ELF ejecutebla aŭ dividita objekto, voku NAME kiam la ejektivebla aŭ dividita objekto ŝarĝas, per difinado de DT_INIT al la adreso de la funkcio. Defaŭlte, la ligilo uzas "_init" kiel la funkcion por voki.

-l arkivo

--library = arĥivo

Aldonu arkivan arkivon al la listo de dosieroj por ligi. Ĉi tiu opcio povas esti uzata iam ajn. Iuj serĉos ĝian paŝliston por rimarkoj de "libarchive.a" por ĉiu arĥivo specifita.

Sur sistemoj, kiuj subtenas dividitajn bibliotekojn, ld ankaŭ povas serĉi bibliotekojn kun etendoj krom ".a". Specife, sur ELF kaj SunOS-sistemoj, ld serĉos dosierujon por biblioteko kun etendo de ".so" antaŭ serĉado de unu kun etendo de ".a". Per konvencio, "etendo" .so "indikas dividitan bibliotekon.

La ligilo serĉos arkivon nur unufoje, ĉe la loko, kie ĝi estas specifita sur la komandlinio. Se la arĥivo difinas simbolon, kiu estis nedifinita en iu objekto, kiu aperis antaŭ la arĥivo sur la komandlinio, la ligilo inkluzivas la taŭgan dosieron (j) de la arkivo. Tamen, nedifinita simbolo en objekto aperinta poste sur la komandlinio ne kaŭzas la ligilon denove serĉi la arkivon.

Vidu la - ( opcion por maniero devigi la ligilon serĉi arkivojn multfoje.

Vi povas listigi la saman arkivon multfoje en la komandlinio.

Ĉi tiu tipo de arĥiva serĉado estas norma por Uniksaj ligiloj. Tamen, se vi uzas ld onAIX, rimarku, ke ĝi estas malsama de la konduto de la ligilo AIX.

-L serĉado

--library-path = searchdir

Aldonu vojon serĉdir al la listo de vojoj, kiuj serĉos arkivajn bibliotekojn kaj ld- kontrolojn. Vi povas uzi ĉi tiun eblon ĉiun fojon. La dosierujoj estas serĉitaj en la ordo, en kiu ili estas specifitaj sur la komandlinio. La adresaroj specifitaj sur la komandlinio estas serĉataj antaŭ la defaŭlta dosierujoj. Ĉiuj -L- ebloj aplikeblas al ĉiuj -l- ebloj, sendepende de la ordo, en kiu aperas la ebloj.

Se searchdir komenciĝas per "=", tiam la "=" estos anstataŭigita per la sysroot prefix , vojo specifita kiam la ligilo estas agordita.

La defaŭlta aro de vojoj sercxataj (sen esti specifita per -L ) dependas de kiu emulation-modo estas uzata, kaj en iuj kazoj ankaŭ pri kiel ĝi estis agordita.

La vojoj ankaŭ povas esti specifitaj en ligilo-skripto kun la "SEARCH_DIR" komando. La adresaroj specifitaj de ĉi tiu maniero serĉiĝas ĉe la punkto, en kiu la ligilo-skripto aperas en la komandlinio.

-m emulado

Emuzi la emulantan ligilon. Vi povas listigi la disponeblaj emuladoj kun la --verbose-V- opcioj.

Se la -m- opcio ne estas uzata, la emulado estas prenita de la "LDEMULATION" medio-variablo, se tio estas difinita.

Alie, la defaŭlta emulado dependas de kiel la ligilo estis agordita.

-M

--print-mapo

Printi ligilon al la norma eligo. Ligilo-mapo provizas informojn pri la ligo, inkluzive de la jenaj:

*

Kie objekto dosieroj kaj simboloj estas mapitaj en memoro.

*

Kiom komunaj simboloj estas asignitaj.

*

Ĉiuj arkivaj membroj inkluzivitaj en la ligo, kun mencio de la simbolo, kiu kaŭzis la enhavon de la arĥivo.

-n

--magia

Forĵetu la alineación de paĝoj de sekcioj kaj marku la rezulton kiel "NMAGIC" se eble.

-N

--omaj

Ŝanĝu la sekciojn de teksto kaj datumoj por esti legeblaj kaj skribeblaj. Ankaŭ, ne paĝo-aliĝu la datumsekcion kaj malŝalti ligilon kontraŭ dividitaj bibliotekoj. Se la eliga formato subtenas unikajn magiajn numerojn, marku la eligo kiel "OMAGICO".

- ne-omagika

Ĉi tiu opcio neigas la plej multajn efikojn de la -N- opcio. Ĝi agordas la tekston-sekcion nur por legi, kaj devigas la datuman segmenton esti vicigita al paĝo. Noto - ĉi tiu opcio ne ebligas ligi kontraŭ dividitaj bibliotekoj. Uzu -Binamic por ĉi tio.

-o eligo

--output = eligo

Uzu eligo kiel la nomo por la programo produktita de ld ; se ĉi tiu opcio ne estas specifita, la nomo a.out estas uzata defaŭlte. La skripta komando "OUTPUT" ankaŭ povas specifi la eligan dosiernomon.

-A nivelo

Se nivelo estas nombraj valoroj pli grandaj ol nulo ld, optimiza la eligo. Ĉi tio povus preni signife pli longan kaj do verŝajne nur eblus ebligita por la fina binara.

-q

--emit-relocs

Lasu translokajn sekciojn kaj enhavojn en plene ligitaj ekzekuteblaj. Afiŝu ligila analizo kaj optimumigo-iloj eble bezonas ĉi tiun informon por plenumi ĝustajn modifojn de ekzekutivoj. Ĉi tio rezultas en pli grandaj ekzekutivoj.

Ĉi tiu opcio nuntempe estas nur subtenata en ELF-platformoj.

-r

--laŭtebla

Generas reenirektebla eligo --- tio estas, generi elsendan dosieron, kiu laŭvice funkcias kiel enigo al ld . Ĉi tio ofte nomiĝas parta ligo . Kiel flanka efiko, en medioj, kiuj subtenas normajn Unikajn magiajn numerojn, ĉi tiu opcio ankaŭ agordas la magian numeron de eliga dosiero al "OMAGICO". Se ĉi tiu opcio ne estas specifita, absoluta dosiero estas produktita. Kiam ligas programojn de C ++, ĉi tiu opcio ne solvas referencojn al konstruistoj; por fari tion, uzu -Ur .

Kiam eniga dosiero ne havas la saman formaton kiel la eliga dosiero, la parta ligo nur estas subtenata, se tiu eniga dosiero ne enhavas ajnajn reagojn. Malsamaj elsendaj formatoj povas havi pluajn limigojn; Ekzemple iuj formatoj bazitaj en "a.out" ne subtenas apartan ligon kun enaj dosieroj en aliaj formatoj.

Ĉi tiu opcio faras la saman aferon kiel -i .

-R- dosiernomo

--just-simboloj = dosiernomo

Legu simbombojn kaj iliajn adresojn de dosiernomo , sed ne anstataŭu ĝin aŭ inkluzivi ĝin en la eligo. Ĉi tio permesas, ke via eliga dosiero raportas simbole al absolutaj lokoj de memoro difinitaj en aliaj programoj. Vi povas uzi ĉi tiun opcion pli ol unufoje.

Por kongruo kun aliaj ELF-ligiloj, se la -R- opcio estas sekvata per dosieruja nomo, prefere ol dosiernomo, ĝi estas traktita kiel la -rpath- opcio.

-s

- ĉio-ĉio

Forpuŝu ĉiujn simbolojn de la eliga dosiero.

-S

--strip-debug

Forpuŝu simbolajn informojn (sed ne ĉiuj simboloj) el la eliga dosiero.

-t

- Malgranda

Printu la nomojn de la enaj dosieroj kiel ili procesas ilin.

-T- skripto

--script = scriptfile

Uzu scriptfile kiel la ligilo-skripto. Ĉi tiu skripto anstataŭas la defaŭltan ligilon de ld (anstataŭ aldoni al ĝi), do komandilo devas specifi ĉion necesa por priskribi la eliga dosiero. Se scriptfile ne ekzistas en la nuna dosierujo, "ld" serĉas ĝin en la dosierujoj specifitaj per ajnaj antaŭaj -L- ebloj. Multoblaj -T- ebloj amasigas.

-u simbolo

--undefinita = simbolo

Forta simbolo esti enmetita en la eliga dosiero kiel nedifinita simbolo. Farante ĉi tion, ekzemple, deĉenigi ligon de pliaj moduloj de normaj bibliotekoj. -u povas esti ripetita kun malsamaj opcioj argumentoj por enigi kromajn nedifinitajn simbolojn. Ĉi tiu opcio estas ekvivalenta al la "EXTERN" ligilo-skripto-komando.

-Ur

Por io krom programoj de C ++, ĉi tiu opcio estas ekvivalenta al -r : ĝi generas reŝanĝeblan eliron --- te, eliga dosiero, kiu laŭvice funkcias kiel enigo al ld . Kiam ligas programojn de C ++, -Ur solvas referencojn al konstruistoj, kontraste kun -r . Ĝi ne funkcias uzi -Ur sur dosieroj, kiuj mem kunligis -Ur ; fojo konstruita tablo konstruis, ĝi ne povas esti aldonita al. Uzu -Ur nur por la lasta interligo, kaj -r por la aliaj.

--unique [= SECTION ]

Krei apartan eliga sekcion por ĉiu eniga sekcio kun SECTION , aŭ se la laŭvola ŝarko de SECTION- argumento mankas, por ĉiu orfana eniga sekcio. Orfana sekcio estas unu ne specife menciita en ligilo-skripto. Vi povas uzi ĉi tiun opcion multfoje en la komandlinio; Ĝi malhelpas la normalan kunfandiĝon de enaj sekcioj kun la sama nomo, superreganta eliga sekcio-asignoj en ligilo-skripto.

-v

--versio

-V

Montru la version-numeron por d . La -V- opcio ankaŭ listigas la subtenitajn emuladojn.

-x

- ĉio

Forigi ĉiujn lokajn simbolojn.

-X

- doktoro-lokuloj

Forigi ĉiujn provizorajn lokajn simbolojn. Por plej multaj celoj, ĉi tio estas ĉiuj lokaj simboloj kies nomoj komenciĝas per L.

-y simbolo

--trace-symbol = simbolo

Printu la nomon de ĉiu ligita dosiero en kiu simbolo aperas. Ĉi tiu opcio povas esti donita iujn fojojn. En multaj sistemoj oni devas premeti substrekon.

Ĉi tiu opcio estas utila kiam vi havas nedifinitan simbolon en via ligo sed ne scias, kie venas la referenco.

-Kia vojo

Aldonu vojon al la defaŭlta biblioteko serĉo. Ĉi tiu opcio ekzistas por kongruo de Solaris.

-z ŝlosilvorto

La rekonitaj ŝlosilvortoj estas "komence", "intermeti", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "nun", "origin", "combreloc", "nocombreloc" kaj "nocopyreloc ". La aliaj ŝlosilvortoj estas ignoritaj por kongrueco de Solaris. "komence" markas la objekton por esti komence komence ĉe tempo de ekzekuto antaŭ iuj aliaj objektoj. "intermeti" markas la objekto, ke ĝia simbolo-tabelo intermetas antaŭ ĉiuj simboloj, sed la primara ejecutable. "loadfltr" markas la objekto, ke ĝiaj filteoj estu procesitaj tuj dum tempo de ekzekuto. "nodefaultlib" markas la celon, kiun la serĉo de dependecoj de ĉi tiu objekto ignoros. ajna defaŭlta biblioteko serĉvojoj. "nodelete" markas, ke la objekto ne estu malŝarĝita dum tempo de ekzekuto. "nodlopen" markas la objekto ne havebla al "dlopen". "nodump" signas ke la objekto ne povas esti dumpita per "dldump". "nun" markas la celon per la ne-mallabora runttempa ligilo. "Origino" markas, ke la objekto povas enhavi $ ORIGINO. "defs" malpermesas nedifinitajn simbolojn. "Muldefs" permesas multajn difinojn. "combreloc" kombinas multoblajn translokajn sekciojn kaj ordigas ilin fari dinamikan simbolon serĉi caching ebla.

"nocombreloc" malŝaltas plurajn sekciojn de translokigo. "nocopyreloc" malŝaltas produktadon de kopiaj retoŝipoj.

- ( arkivoj -)

- Arkivaj grupoj de arkivo --end-grupo

La arkivoj devus esti listo de arkivaj dosieroj . Ili povas esti aŭ eksplicitaj dosiernomoj, aŭ -l- ebloj.

La specifaj arkivoj estas serĉitaj multfoje ĝis ne kreas novajn nedifinitajn referencojn. Kutime, arkivo estas serĉata nur unufoje en la ordo, ke ĝi estas specifita sur la komandlinio. Se simbolo en tiu arkivo bezonas solvi nedifinitan simbolon menciitan de objekto en arkivo, kiu aperis poste sur la komandlinio, la ligilo ne povus solvi tiun referencon. Per kolektado de la arkivoj, ili ĉiuj serĉas iomete, ĝis ĉiuj eblaj referencoj estas solvitaj.

Uzante ĉi tiun opcion havas signifan rendimentan koston. Ĝi estas plej bone uzi ĝin nur kiam estas neeviteblaj cirklaj referencoj inter du aŭ pli da arkivoj.

--accept-unknown-input-arch

- ne-akcepti-nekonata-enigo-arko

Diru la ligilon akcepti enhavajn dosierojn kies arkitekturo ne povas esti agnoskita. La supozo estas, ke la uzanto scias, kion ili faras kaj intence volas ligi en ĉi tiuj nekonataj enaj dosieroj. Ĉi tio estis la defaŭlta konduto de la ligilo, antaŭ ol liberigi 2.14. La defaŭlta konduto de liberigo 2.14 pluen estas malakcepti tiajn enhavajn dosierojn, do la --accept-unknown-input-arch- opcio aldoniĝis por restarigi la malnovan konduton.

-sertu ŝlosilvorton

Ĉi tiu opcio estas ignorita por kongruo de SunOS .

-Bininamika

-dy

-kalkulilo

Ligilo kontraŭ dinamikaj bibliotekoj. Ĉi tio estas nur signifa sur platformoj por kiuj dividitaj bibliotekoj estas subtenataj. Ĉi tiu opcio estas kutime la defaŭlta en tiaj platformoj. La malsamaj variantoj de ĉi tiu opcio estas por kongruo kun diversaj sistemoj. Vi povas uzi ĉi tiun opcion multfoje en la komandlinio: ĝi influas la bibliotekon serĉante -l- eblojn kiuj sekvas ĝin.

-Brupo

Fiksu la "DF_1_GROUP" flago en la "DT_FLAGS_1" eniro en la dinamika sekcio. Ĉi tio kaŭzas la rondtempa ligilo por pritrakti serĉojn en ĉi tiu objekto kaj ĝiaj dependajxoj esti faritaj nur ene de la grupo. - ne-nedifinita estas implicita. Ĉi tiu opcio nur signifas en platformoj de ELF, kiuj subtenas dividitajn bibliotekojn .

-Stika

-dn

-non_servita

-stika

Ne ligu kontraŭ dividitaj bibliotekoj. Ĉi tio estas nur signifa sur platformoj por kiuj dividitaj bibliotekoj estas subtenataj. La malsamaj variantoj de ĉi tiu opcio estas por kongruo kun diversaj sistemoj. Vi povas uzi ĉi tiun opcion multfoje en la komandlinio: ĝi influas la bibliotekon serĉante -l- eblojn kiuj sekvas ĝin.

-Bimbolika

Kiam vi kreas dividitan bibliotekon, ligu referencojn al mondaj simboloj al la difino ene de la dividita biblioteko, se iu ajn. Kutime, ĝi eblas programon ligita al dividita biblioteko por forĵeti la difinon ene de la dividita biblioteko. Ĉi tiu opcio estas nur signifa pri ELFplatformoj, kiuj subtenas dividitajn bibliotekojn.

- sekcio-sekcioj

- ne-kontrol-sekcioj

Petas la ligilon ne kontroli sekciajn adresojn post kiam ili estas atribuitaj por vidi ĉu ekzistas translokigoj. Kutime la ligilo plenumos ĉi tiun kontrolon, kaj se ĝi trovos iujn overlaps, ĝi produktos taŭgajn erarajn mesaĝojn. La ligilo scias, kaj faras alprenojn por sekcioj en superpartoj. La defaŭlta konduto povas esti restarigita per la komandlinioŝaltilo - sekcio-sekcioj .

--cref

Eligo kruca referenca tablo. Se liga mapo-dosiero estas generita, la kruca referenca tablo estas presita al la mapo-dosiero. Alie, ĝi estas presita sur la norma eligo.

La formato de la tablo estas intence simpla, por ke ĝi estu facile procesita per skripto, se necese. La simboloj estas presitaj, ordo laŭnome. Por ĉiu simbolo, listo de dosiernomoj estas donita. Se la simbolo estas difinita, la unua dosiero enlistigita estas la loko de la difino. La ceteraj dosieroj enhavas referencojn al la simbolo.

- ne-difino-komuna

Ĉi tiu opcio malhelpas la atribuadon de adresoj al komunaj simboloj. La skripta komando "INHIBIT_COMMON_ALLOCATION" havas la saman efikon.

La ne -difinita-komuna eblo permesas malŝalti la decidon asigni adresojn al Komunaj simboloj el la elekto de la eliga dosier-tipo; alie ne-reemplata eliga tipo devigas atribui adresojn al Komunaj simboloj. Uzanta -no-difin-komuna permesas Komunajn simbolojn referencajn de dividita biblioteko esti adresitaj nur en la ĉefa programo. Ĉi tio forigas la neuzitan duplikatan spacon en la dividita biblioteko, kaj ankaŭ evitas ajnan ebla konfuzo pri solvado al la malĝusta duplikato kiam ekzistas multaj dinamikaj moduloj kun specialaj serĉaj vojoj por runtime-simbolo-rezolucio.

--defsym symbol = esprimo

Krei suman simbolon en la eliga dosiero, enhavanta la absolutan adreson donitan per esprimo . Vi povas uzi ĉi tiun opcion tiom multe da tempo kiel necese por difini plurajn simbolojn en la komandlinio. Limigita formo de aritmetiko estas subtenata por la esprimo en ĉi tiu kunteksto: vi povas doni konstantan heksadekimon aŭ nomon de ekzistanta simbolo, aŭ uzi "+" kaj "-" por aldoni aŭ submeti hexadecimal konstantojn aŭ simbolojn. Se vi bezonas pli ellaboritajn esprimojn, konsideras uzi la ligilon de komandlingvo de skripto. Noto: ne devus esti blanka spaco inter simbolo , la egala signo (`` = ''), kaj esprimo .

--demangle [= stilo ]

ne-demangulo

Ĉi tiuj ebloj kontrolas ĉu por demangle simbolo nomoj en eraroj mesaĝoj kaj aliaj eligo. Kiam la ligilo estas demandita, ĝi provas prezenti simbolajn nomojn laŭ legebla maniero: ĝi streĉas gvidajn substrekojn, se ili estas uzataj de la objekto-dosiero, kaj konvertas la nomojn de C ++ miksitaj simboloj en uzantojn legeblajn nomojn. Malsamaj kompililoj havas malsamajn manĝajn stilojn. La laŭvola demandanta stilo argumento povas esti uzata por elekti taŭgan demandlingvan stilon por via tradukilo. La ligilo demangelos defaŭlte, se la varia variablo de medio COLLECT_NO_DEMANGLE estas agordita. Ĉi tiuj elektoj povas esti uzataj por anstataŭi la defaŭltan.

--dinamika-ligilo- dosiero

Ŝanĝu la nomon de la dinamika ligilo. Ĉi tio estas nur signifa kiam generiĝas dinamike ligita ELF-ekzekutivojn. La defaŭlta dinamika ligilo kutime korektas; Ne uzu ĉi tion, se vi ne scias, kion vi faras.

--embedded-relocs

Ĉi tiu opcio nur signifas, kiam ligas la kodon PIC enigita de MIPS, generita per la -membedded-pic-opcio al la tradukilo de GNU kaj kunmetanto. Ĝi kaŭzas la ligilon krei tablon, kiu povas esti uzata dum tempo de ekzekuto por translokigi ajnan datumon, kiu estis statike komence al puntero-valoroj. Vidu la kodon en testsuite / ld-empic por detaloj.

- fatalaj-avertoj

Trakti ĉiujn avertojn kiel erarojn .

--force-exe-sufikso

Certigu, ke eliga dosiero havas .exe sufikso.

Se sukcese konstruita tute ligita eliga dosiero ne havas " ekzekuton " aŭ " .dll " sufikso, ĉi tiu opcio devigas la ligilon kopii la eligan dosieron al unu el la sama nomo kun ".exe" sufikso. Ĉi tiu opcio estas utila kiam vi uzas unododigitajn Uniksajn dosierujojn en Microsoft Windows-gastiganto, ĉar iuj versioj de Windows ne funkcios, se ĝi finiĝos en ".exe" sufikso.

-no-ĉ-sekcioj

--gc-sekcioj

Ebligu rubujan kolekton de neuzataj enaj sekcioj. Ĝi estas ignorita pri celoj, kiuj ne subtenas ĉi tiun opcion. Ĉi tiu opcio ne estas kongrua kun -r , nek devus esti uzata kun dinamika ligo. La kutima konduto (de ne plenumi ĉi tiun rubujan kolekton ) povas esti restarigita per specifaĵo --no-gc-sekcioj en la komandlinio.

- helpo

Printu resumon de la komandlinioj sur la norma eligo kaj eliro.

- Atendu-helpo

Printu resumon de ĉiuj celaj specifaj ebloj sur la norma eligo kaj eliro.

-Map- mapofilo

Printi ligilon al la dosiero- mapo . Vidu la priskribon de la -M- opcio, supre.

- Ne-konservi-memoron

Dd kutime optimumigas por rapido super la uzado de memoro per kokado de la simbolaj tabeloj de enaj dosieroj en memoro. Ĉi tiu opcio diras ke ld anstataŭe optimumigi por memoro, per reelektado de la simbolo-tabloj kiel necesa. Ĉi tio povas esti postulita se ld eliras el memoro-spaco dum ĝi ligas grandan ekzekuton.

- nefinitefinita

-z defs

Kutime kiam kreanta ne-simbola dividita biblioteko, nedifinitaj simboloj estas permesitaj kaj lasas esti solvitaj de la runtime loader. Ĉi tiuj opcioj malpermesas tiajn nedifinitajn simbolojn.

- Alvoko-multobla difino

-z muldefs

Kutime kiam simbolo estas difinita multfoje, la ligilo raportos fatalan eraron. Ĉi tiuj elektoj permesas multajn difinojn kaj la unua difino estos uzata.

--allow-shlib-undefined

Permesu nedifinitajn simbolojn en dividitaj objektoj eĉ kiam -no-nedifinita estas aro. La reela rezulto estos, ke la nedifinitaj simboloj en regulaj objektoj ankoraŭ deĉenigos eraron, sed nedifinitaj simboloj en komunaj celoj estos ignoritaj. La efektivigo de neniu_finfina faro supozas, ke la rultempa interligo sufokos nedifinitajn simbolojn. Tamen ekzistas almenaŭ unu sistemo (BeOS), kie nedifinitaj simboloj en komunaj bibliotekoj estas normala, ĉar la kerno malplenigas ilin en ŝarĝo, por elekti, kies funkcion plej taŭgas por la nuna arkitekturo. IE dinamike elektas taŭgan memset-funkcion. Ŝajne ankaŭ estas normala por ke HPPA-dividitaj bibliotekoj havu nedifinitajn simbolojn.

- nefinita-versio

Kutime kiam simbolo havas nedifinitan version, la ligilo ignoros ĝin. Ĉi tiu opcio malpermesas simbolojn kun nedifinita versio kaj fatala eraro estos anstataŭigita.

- Ne-averti-mismatch

Kutime ld donos eraron, se vi provos ligi kune eniga dosieroj, kiuj estas kontraŭformitaj pro iu kialo, eble ĉar ili estis kompilitaj por malsamaj procesoroj aŭ por malsamaj endiancoj. Ĉi tiu opcio diras ald, ke ĝi silentas permesi tiajn eblajn erarojn. Ĉi tiu opcio nur devas esti uzata kun zorgoj, en kazoj kiam vi prenis iun specialan agon, kiu certigas, ke la ligiloj de la ligiloj estas netaŭgaj.

- ne-tuta-arkivo

Forĵetu la efikon de la - -dosiera elekto por postaj arkivaj dosieroj.

--nomohibit-ekzec

Retenu la ekzekutan elsendan dosieron kiam ajn ĝi estas ankoraŭ uzebla. Kutime, la ligo ne produktos eligan dosieron se ĝi renkontas erarojn dum la ligo-procezo; ĝi eliras sen redakti elsendan dosieron kiam temas pri eraro ajn.

-nostdlib

Nur serĉaj bibliotekaj dosierujoj eksplicite specifitaj sur la komandlinio. Bibliotekaj dosierujoj specifitaj en ligaj skriptoj (inkluzive de ligaj skriptoj specifitaj sur la komandlinio) estas ignoritaj.

--forma eligo-formato

D povas esti agordita por subteni pli ol unu specon de objekto-dosiero. Se via ld estas agordita de ĉi tiu maniero, vi povas uzi la --oformat- opcion por specifi la binaran formaton por la eliga objekto-dosiero. Eĉ kiam ID estas agordita por subteni alternativajn objektajn formatojn, vi ne kutime devas specifi ĉi tion, ĉar ld devus esti agordita por produkti kiel defaŭlta eliga formato la plej kutiman formaton en ĉiu maŝino. Eligo-formato estas teksto-kordo, la nomo de aparta formato subtenata de la BFD-bibliotekoj. (Vi povas listigi la disponeblajn duajn formatojn kun objdump -i .) La skripta komando "OUTPUT_FORMAT" ankaŭ povas specifi la eligan formaton, sed ĉi tiu opcio anstataŭigas ĝin.

-qmagic

Ĉi tiu opcio estas ignorita por Linukso-kongruo.

-Kaj

Ĉi tiu opcio estas ignorita por SVR4-kongruo.

--relax

Elekto kun maŝino dependaj efikoj. Ĉi tiu opcio nur subtenas kelkajn celojn.

En iuj platformoj, la --relax- opcio plenumas tutmondajn optimizojn, kiuj ebligas, kiam la ligilo solvas la programojn, kiel malstreĉiĝaj modoj de direkto kaj sintezado de novaj instrukcioj en la eliga objekto.

Sur kelkaj platformoj ĉi tiuj ligiloj temas tutmondaj optimizoj povas fari simbolajn elpurigadon de la rezultanta ebla neebla. Ĉi tio estas konata kiel la kazo de la familio de procesoroj de Matsushita MN10200 kaj MN10300.

Sur platformoj, kie ĉi tio ne estas subtenata, --relax estas akceptata, sed ignorata.

- reten-simboloj- dosiernomo

Retenu nur la simbolojn en la dosiernomo , forĵetante ĉiujn aliajn. dosiernomo estas simple ebena dosiero, kun unu simbola nomo per linio. Ĉi tiu opcio estas speciale utila en medioj (kiel VxWorks), kie granda suma simbolo-tablo amasigas iom post iom, por konservi la temporan tempon.

- reten-simbol-dosiero ne forĵetas nedifinitajn simbolojn, aŭ simbolojn necesajn por translokigoj.

Vi nur povas specifi - reten-simbol-dosieron unufoje en la komandlinio. Ĝi preterlasas -s kaj -S .

-rpiro

Aldonu dosierujon al la serĉa vojo de la runttempa biblioteko. Ĉi tio estas uzata kiam ligas Ekspekteblajn kun dividitaj objektoj. Ĉiuj-argumentaj argumentoj estas concatenitaj kaj pasitaj al la runttempa ligilo, kiu uzas ilin por loki dividitajn objektojn dum tempo de ekzekuto. La opcio- rpath ankaŭ estas uzata, kiam lokas dividitajn objektojn, kiuj bezonas dividitajn objektojn eksplicite inkluzivitajn en la ligilo; vidu la priskribon de la -rpath-link- opcio. Se -rpath ne estas uzata al la ligo de ELF-ejektabla, la enhavo de la variablo de medio "LD_RUN_PATH" estos uzata se ĝi estas difinita.

La opcio- rpath ankaŭ povas esti uzata en SunOS. Defaŭlte, en SunOS, la ligilo formos rondtempa serĉa diakilo el ĉiuj -L- ebloj kiujn ĝi donas. Se oni uzas -rpath- opcion, la tempo de serĉado de tempo de ekzekuto estos formata ekskluzive uzante la -rpotojn , ignorante la -L- eblojn. Ĉi tio povas esti utila kiam vi uzas gcc, kiu aldonas multajn -L- eblojn kiuj povas esti surNFS-muntitaj dosierujoj.

Por kongruo kun aliaj ELF-ligiloj, se la -R- opcio estas sekvata per dosieruja nomo, prefere ol dosiernomo, ĝi estas traktita kiel la -rpath- opcio.

-Rpath-ligilo DIR

Kiam uzanta ELF aŭ SunOS, unu dividita biblioteko eble postulas alian. Ĉi tio okazas kiam "ld -shared" ligilo inkluzivas dividitan bibliotekon kiel unu el la eniga dosieroj.

Kiam la ligilo renkontas tian dependecon, kiam ĝi ne dividas, ne-translokiĝan ligilon, ĝi aŭtomate provos lokalizi la bezonatan dividitan bibliotekon kaj inkluzivi ĝin en la ligo, se ĝi ne estas ekskluzive inkluzivita. En tia kazo, la -rpath-link- opcio specifas la unuan aron de dosierujoj por serĉi. La opcio-lpath-ligilo povas specifi sekvencon de dosierujaj nomoj ĉu specifante liston de nomoj apartigitaj per kolonoj aŭ aperi multfoje.

Ĉi tiu opcio devas esti uzata kun singardeco pro tio ke ĝi forigas la serĉan vojon, kiu eble malfacile kompilis en dividitan bibliotekon. En tia kazo eblas uzi senintenceme serĉan vojon ol la runttempa ligo.

La ligilo uzas la sekvajn serĉajn vojojn por lokalizi bezonajn dividajn bibliotekojn.

1.

Ajna dosierujoj specifitaj per -rpath-link- opcioj.

2.

Ajna dosierujoj specifitaj per -rpath- opcioj. La diferenco inter -rpath kaj -rpath-link estas, ke dosierujoj specifitaj per -rpath- opcioj estas inkluzivitaj en la ejektivebla kaj uzata dum tempo de ekzekuto, dum la -rpath-ligilo estas nur efika ĉe ligo-tempo. Ĝi estas nur por la denaska ligo.

3.

En sistemo de ELF, se la opcioj -rpath kaj "rpath-link" ne estis uzataj, serĉu la enhavon de la variablo de medio "LD_RUN_PATH". Ĝi estas nur por la denaska ligo.

4.

En SunOS, se la -rpath- opcio ne estis uzata, serĉu ajnajn dosierujojn specifitajn per -L- ebloj.

5.

Por denaska ligilo, la enhavo de la medio-variablo "LD_LIBRARY_PATH".

6.

Por indiĝena ELF-ligilo, la dosierujoj en "DT_RUNPATH" aŭ "DT_RPATH" de dividita biblioteko serĉas dividitajn bibliotekojn bezonatajn de ĝi. La eniroj "DT_RPATH" estas ignoritaj se ekzistas "DT_RUNPATH".

7.

La defaŭltaj dosierujoj, kutime / lib kaj / usr / lib .

8.

Por denaska ligilo en ELF-sistemo, se la dosiero /etc/ld.so.conf ekzistas, la listo de dosierujoj trovitaj en tiu dosiero.

Se la bezonata dividita biblioteko ne estas trovita, la ligo emis averton kaj daŭrigos per la ligo.

-kredita

-Brektebla

Krei dividitan bibliotekon. Ĉi tio nuntempe nur estas subtenata en ELF, XCOFF kaj SunOS-platformoj. En SunOS, la ligilo aŭtomate kreos dividitan bibliotekon se -e opcio ne estas uzata kaj nefinite simboloj en la ligo.

--sort-komuna

Ĉi tiu opcio diras ld ordigi la komunajn simbolojn laŭ grando kiam ĝi lokas ilin en la taŭga eliga sekcio. Unue venu ĉiuj poŝtaj simboloj, tiam ĉiuj du bajtoj, tiam ĉiuj kvar bajtoj, kaj tiam ĉio alia. Ĉi tio estas malebligi malplenojn inter simboloj pro alineaj limigoj.

--split-by-file [ grandeco ]

Simila al --split-by-reloc sed kreas novan eliga sekcion por ĉiu eniga dosiero kiam grando estas atingita. grandeco defaŭltas al grandeco de 1 se ne donita.

--split-by-reloc [ kalkulo ]

Provas krei kromajn sekciojn en la eliga dosiero por ke neniu eliga sekcio en la dosiero enhavas pli ol kalkulojn. Ĉi tio estas utila al la generi grandegajn translokajn dosierojn por elŝuti en certajn realan tempon kun la COFF-objekto-formato; pro tio ke COFFcannot reprezentas pli ol 65535 translokiĝojn en sola sekcio. Notu, ke ĉi tio malsukcesos labori kun objekto-dosieroj, kiuj ne subtenas arbitrajn sekciojn. La ligilo ne dividos individuajn enhavajn sekciojn por redistribuado, do se sola eniga sekcio enhavas pli ol kalkulojn, unu eliga sekcio enhavos multajn retocojn. kalkulprezento al valoro de 32768.

--statoj

Komputi kaj montri statistikon pri la funkciado de la ligilo, kiel ekzekuto kaj uzado de memoro.

- Tradicia formato

Por iuj celoj, la eligo de DD estas malsama en iuj manieroj de la eligo de iu ekzistanta ligilo. Ĉi tiu ŝaltilo petas ld por uzi la tradician formaton anstataŭe.

Ekzemple, sur SunOS, ld kombinas duplikatajn enirojn en la simbolo kordo. Ĉi tio povas redukti la grandecon de eliga dosiero kun plena elpuriga informo per pli ol 30 procentoj. Bedaŭrinde, la programo "dbx" de SunOS ne povas legi la rezultan programon ("gdb" ne havas problemojn). La -tradic-formatoŝaltilo diras ld por ne kombini duplikatajn enirojn.

--section-start sectionname = org

Loku sekcion en la eliga dosiero ĉe la absoluta adreso donita de org . Vi povas uzi ĉi tiun elekton tiom multe da fojoj kiel necese por trovi multajn sekciojn en la komandlinio. org devas esti ununura heksadeka entjero; Por kongruo kun aliaj ligiloj, vi povas preterlasi la ĉefan 0x kutime asociitan kun heksadektaj valoroj. Noto: ne devus esti blanka spaco inter sekcio , la egala signo (`` = ''), kaj org .

-Tiskoj org

-Tatata org

-Tekto org

Uzu org kiel la komenca adreso por --- respektive --- la "bss", "datumoj", aŭ la "teksto" segmento de la eliga dosiero. org devas esti ununura heksadeka entjero; Por kongruo kun aliaj ligiloj, vi povas preterlasi la ĉefan 0x kutime asociitan kun heksadektaj valoroj.

--dll-verbose

--verbose

Montru la version-numeron por ld kaj listigu la ligilojn emulatajn subtenitajn. Montru, kio eniga dosiero povas kaj ne povas esti malfermita. Montru la ligilon-skripton uzata de la ligilo.

--version-script = version-scriptfile

Indiku la nomon de versio-skripto al la ligilo. Ĉi tio estas kutime uzita kreinte dividajn bibliotekojn por specifi plian informon pri la versio heirarkio por la biblioteko kreata. Ĉi tiu opcio nur signifas en platformoj de ELF, kiuj subtenas dividitajn bibliotekojn.

--warn-komuna

Avertu, kiam komuna simbolo kombinas kun alia komuna simbolo aŭ kun simbolo-difino. Uniksaj ligiloj permesas ĉi tiun iom malklaran praktikon, sed ligiloj sur iuj aliaj mastrumaj sistemoj ne. Ĉi tiu eblo permesas al vi trovi potencajn problemojn kombinante mondajn simbolojn. Bedaŭrinde, iuj bibliotekoj C uzas ĉi tiun praktikon, do vi povas akiri iujn avertojn pri simboloj en la bibliotekoj kaj ankaŭ en viaj programoj.

Ekzistas tri specoj de tutmondaj simboloj, ilustritaj ĉi tie per C ekzemploj:

int i = 1;

Difino, kiu iras en la komence informita sekcio de la eliga dosiero.

ekstera int;

Nefinita referenco, kiu ne atribuas spacon. Debeto esti aŭ difino aŭ komuna simbolo por la variablo en iu loko.

int i;

Komuna simbolo. Se estas nur (unu aŭ pli) komunaj simboloj por variablo, ĝi iras en la neinireblajn areon de la eliga dosiero. La ligilo kunigas multajn komunajn simbolojn por la sama variablo en ununura simbolo. Se ili estas de malsamaj grandecoj, ĝi elektas la plej grandan grandecon. La ligilo igas komunan simbolon en deklaron, se estas difino de la sama variablo.

La --warn-komuna opcio povas produkti kvin specojn de avertoj. Ĉiu averto konsistas el paro da linioj: la unua priskribas la simbolon, nur renkontitan, kaj la dua priskribas la antaŭan simbolon renkontitan kun la sama nomo. Unu aŭ ambaŭ el la du simboloj estos komuna simbolo.

1.

Turnante komunan simbolon en referencon, ĉar jam ekzistas difino por la simbolo.

(
): averto: komuna de '' malpermesita per difino (): averto: difinita ĉi tie

2.

Turnante komunan simbolon en referencon, ĉar posta difino por la simbolo troviĝas. Ĉi tiu estas la sama kiel la antaŭa kazo, krom ke la simboloj troviĝas en alia ordo.

(
): averto: difino de ` 'overriding common (
): averto: komuna estas ĉi tie

3.

Kunfandante komuna simbolo kun antaŭa samspeca komuna simbolo.

(
): averto: multobla komuna de '' (
): averto: antaŭa komuna estas ĉi tie

4.

Kunfandante komuna simbolo kun antaŭa pli granda komuna simbolo.

(
): averto: komuna de '' malpermesita per pli granda komuna (): averto: pli granda komuna estas ĉi tie

5.

Kunfandante komuna simbolo kun antaŭa pli malgranda komuna simbolo. Ĉi tiu estas la sama kiel la antaŭa kazo, krom ke la simboloj troviĝas en alia ordo.

(
): averto: komuna de '' overriding smaller common (
): warning: smaller common is here

- Edukaj konstruistoj

Avertu, se iuj tutmondaj konstruistoj estas uzataj. Ĉi tio nur utilas por kelkaj objekto-dosieroj. Por formatoj kiel COFF aŭ ELF, la ligilo ne povas detekti la uzon de tutmondaj konstruistoj.

--warn-multobla-gp

Avertu, se necesaj multoblaj puntaj valoroj estas en la eliga dosiero . Ĉi tio nur signifas por iuj procesoroj, kiel ekzemple la Alfa. Specife, iuj procesoroj metas grandvalorajn konstantojn en speciala sekcio. Speciala registro (la tutmonda puntero) aperigas en la mezo de ĉi tiu sekcio, tiel ke konstantaj povas esti ŝarĝitaj efike per baza registriĝa relativa maniero. Pro tio ke la kompenso en baza-registra relativa reĝimo estas fiksita kaj relative malgranda (ekz. 16 bitoj), ĉi tiu limigas la maksimuman grandecon de la konstanta naĝejo. Tiel, en grandaj programoj, ofte oni devas uzi multajn mondajn punktajn valorojn por povi trakti ĉiujn eblajn konstantojn. Ĉi tiu opcio kaŭzas averton esti elsendita kiam ajn ĉi tiu kazo okazas.

--ĉarni-unufoje

Nur avertu unufoje por ĉiu nedifinita simbolo, anstataŭ unufoje per modulo, kiu rilatas al ĝi.

--warn-sekcio-vicigi

Avertu, se la adreso de eliga sekcio ŝanĝiĝas pro alineado. Tipe, la alineo estos agordita per eniga sekcio. La adreso nur ŝanĝiĝos se ĝi ne eksplicite specifos; tio estas, se la komando "SECTIONS" ne specifas komencan adreson por la sekcio.

--dosierujo

Por ĉiu arĥivo menciita sur la komandlinio post la opcio -whole-arkivo , inkluzivu ĉiun objektoran dosieron en la arkivo en la ligo, anstataŭ serĉi la arkivon por la postulataj objekto-dosieroj. Ĉi tio kutime estas por igi arkivan dosieron en dividitan bibliotekon, devigante ĉiun celon esti inkludita en la rezultanta dividita biblioteko. Ĉi tiu opcio povas esti uzata pli ol unufoje.

Du notoj, kiam vi uzas ĉi tiun opcion de gcc: Unue, gcc ne scias pri ĉi tiu opcio, do vi devas uzi -Wl, -whole-archive . Due, ne forgesu uzi -Ĉi-ne-entute arkivon post via listo de arkivoj, ĉar gcc aldonos sian propran liston de arkivoj al via ligo kaj vi eble ne volas, ke ĉi tiu flago ankaŭ influas tiujn.

--rapia simbolo

Uzu envolvan funkcion por simbolo . Ajna nedifinita referenco al simbolo estos solvita al "__ wrap_symbol". Ajna nedifinita referenco al "__real_symbol" estos solvita al simbolo .

Ĉi tio povas esti uzata por provizi envolvon por sistemo-funkcio. La envolva funkcio devus esti nomita "__wrap_symbol". Se ĝi deziras nomi la sistemon funkcion, ĝi devus nomi "__ real_symbol".

Jen banala ekzemplo:

malplena * __wrap_malloc (int c) {printf ("malloc vokita kun% ld \ n", c); revenu __real_malloc (c); }

Se vi kunligas alian kodon kun ĉi tiu dosiero per --wrap malloc , tiam ĉiuj alvokoj al "malloc" vokos la funkcion "__wrap_malloc" anstataŭe. La alvoko al "__real_malloc" en "__wrap_malloc" nomos la realan "malloc" funkcion.

Vi eble volas ankaŭ provizi funkcion "__real_malloc", tiel ke ligiloj sen la -wrap- opcio sukcesos. Se vi faras ĉi tion, vi ne devus meti la difinon de "__ real_malloc" en la sama dosiero kiel "__wrap_malloc"; se vi faras, la kunmetanto povas solvi la alvokon antaŭ ol la ligilo havas ŝancon envolvi ĝin al "malloc".

--enable-novaj-sakoj

--disable-new-dtags

Ĉi tiu ligo povas krei novajn dinamikajn etikedojn en ELF. Sed la pli malnovaj ELF-sistemoj eble ne komprenas ilin. Se vi specifas --enable-new-dtags , la dinamikaj etikedoj estos kreitaj kiel necese. Se vi specifas --disable-new-dtags , ne kreos novajn dinamikajn etikedojn. Defaŭlte, la novaj dinamikaj etikedoj ne estas kreitaj. Rimarku, ke tiuj elektoj nur estas disponeblaj por sistemoj de ERF.

La i386 PE-ligilo subtenas la elektitan opcion, kio kaŭzas ke la eligo estu dinamike ligita biblioteko (DLL) anstataŭ normala ejecutable. Vi devas nomi la eliron "* .dll" kiam vi uzas ĉi tiun opcion. Krome, la ligilo plene subtenas la normajn "* .def" dosierojn, kiuj povas esti specifitaj sur la ligilo-komandlinio kiel objekto-dosiero (fakte, ĝi devus antaŭi al arkivoj kiujn ĝi eksportas simbolojn de, por certigi, ke ili aliĝas, nur kiel normala objekto).

Krom la ebloj komuna por ĉiuj celoj, la i386 PE-ligilo subtenas pliajn komandliniojn, kiuj estas specifaj al la i386 PE-celo. Ebloj, kiuj taksas valorojn, povas esti apartigitaj de siaj valoroj per spaco aŭ egala signo.

--add-stdcall-alias

Se donita, simboloj kun stdcall-sufikso (@ nn ) estos eksportitaj kiel-estas kaj ankaŭ kun la sufikso forigita.

- dosiero-dosiero- dosiero

Uzu dosieron kiel la nomon de dosiero, por konservi la bazajn adresojn de ĉiuj reubicacioj necesaj por generi DLLs kun dlltool .

--dll

Krei DLL anstataŭ reguligeblajn eblojn. Vi ankaŭ povas uzi -kredita aŭ specifi "LIBRARY" en donita ".def" dosiero.

--enable-stdcall-fixup

--disable-stdcall-fixup

Se la ligo troviĝas simbolo, ke ĝi ne povas solvi, ĝi provos fari `` malĝustan ligilon 'serĉante alian difinitan simbolon, kiu diferencas nur en la formato de la simbolo (cdecl vs stdcall) kaj solvos tiun simbolon per ligo al la matĉo. Ekzemple, la nedifinita simbolo "_foo" povus esti ligita al la funkcio "_foo @ 12", aŭ la nedifinita simbolo "_bar @ 16" povus esti ligita al la funkcio "_bar". Kiam la ligilo faras ĉi tion, ĝi presas averton, ĉar ĝi kutime devus malsukcesi ligi, sed foje importado de bibliotekoj generitaj de triaj dlloj eble bezonos ĉi tiun funkcion por esti uzebla. Se vi specifas --enable-stdcall-fixup , ĉi tiu funkcio estas plene ebligita kaj avertoj ne estas presitaj. Se vi specifas --disable-stdcall-fixup , ĉi tiu funkcio estas malŝaltita kaj tiaj mismatches estas konsiderata kiel eraroj.

--portporto-ĉiuj-simboloj

Se donita, ĉiuj sumaj simboloj en la celoj uzataj por konstrui DLL estos eksportitaj de la DLL. Rimarku, ke ĉi tio estas la defaŭlta, se alie ne estus eksportitaj simboloj. Kiam la simboloj eksplicite eksportiĝas per DEF-dosieroj aŭ implicite eksportitaj per funkcioj de funkcio, la defaŭlto ne eksportas ion ajn krom se ĉi tiu opcio estas donita. Notu, ke la simboloj "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", kaj "impure_ptr" ne estos aŭtomate eksportataj. Ankaŭ, simboloj importitaj de aliaj DLLs ne estos denove eksportataj, nek simboloj, kiuj specifas la internan aranĝon de DLL, kiel tiuj, kiuj komencas kun "_head_" aŭ finante kun "_iname". Krome, neniuj simboloj de "libgcc", "libstd ++", "libmingw32", aŭ "crtX.o" estos eksportitaj. Simboloj kies nomoj komenciĝas per "__rtti_" aŭ "__builtin_" ne estos eksportitaj, por helpi kun C ++ DLLs. Fine, ekzistas vasta listo de cimwin-privataj simboloj, kiuj ne estas eksportitaj (evidente, ĉi tio aplikas kiam konstrui DLLs por celoj de cikwino).

Ĉi tiuj cgwin-ekskludoj estas: "_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 ", kaj" medio ".

--exkludi simbolojn , simbolo , ...

Specifas liston de simboloj, kiuj ne devas esti aŭtomate eksportitaj. La simbolaj nomoj povas esti limigitaj per komoj aŭ kolonoj.

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

Specifas liston de arkivaj bibliotekoj, de kiuj simboloj ne estu aŭtomate eksportataj. La bibliotekaj nomoj povas esti limigitaj per komoj aŭ kolonoj. Specifante "--exclude-libs ALL" ekskludas simbolojn en ĉiuj arkivaj bibliotekoj de aŭtomata eksportado. Simboloj eksplicite listigitaj en .def-dosiero ankoraŭ eksportiĝas, sendepende de ĉi tiu opcio.

--file-alineado

Indiku la alinean dosieron. Sekcioj en la dosiero ĉiam komenciĝos ĉe dosieroj, kiuj estas multnombraj de ĉi tiu nombro. Ĉi tio malfaŭdas al 512.

- Rezervo

- Rezervu , kompromiti

Indiku la kvanton de memoro por rezervi (kaj laŭvole fariĝi) por esti uzata kiel havaĵo por ĉi tiu programo. La defaŭlto estas 1Mb rezervita, 4K farita.

--image-baza valoro

Uzu valoro kiel la baza adreso de via programo aŭ dll. Ĉi tiu estas la plej malalta memoro-loko, kiu estos uzata kiam via programo aŭ dll estas ŝarĝita. Por redukti la bezonon translokiĝi kaj plibonigi la plenumadon de viaj dlls, ĉiu devas havi solan bazan adreson kaj ne superkovri iujn aliajn dllojn. La defaŭlto estas 0x400000 por executables, kaj 0x10000000 por dlls.

-kil-at

Se donita, la stiksaj sufiksoj (@ nn ) estos forĵetitaj de simboloj antaŭ ol ili estas eksportitaj.

--major-bildo-versio valoro

Agordas la plej grandan numeron de la '' bildo-versio ''. Defaŭltas al 1.

- valoro -versio-versio

Agordas la plej grandan numeron de la '' os versio ''. Defaŭlta al 4.

- valora versio -major-subsistemo

Agordas la plej grandan numeron de la '' subsistema versio ''. Defaŭlta al 4.

--minor-bildo-versio valoro

Agordas la plej malgrandan numeron de la '' bildo-versio ''. Defaŭltas al 0.

- valoro -versio-versio

Agordas la plej malgrandan numeron de '`os versio' '. Defaŭltas al 0.

- valora versio -minor-subsistemo

Agordas la plej malgrandan numeron de la '' subsistema versio ''. Defaŭltas al 0.

- dosierujo -def- dosiero

La ligilo kreos la dosieron- dosieron, kiu enhavos DEF-dosieron, kiu respondas al la DLL, kiun la ligilo generas. Ĉi tiu DEF-dosiero (kiu devus esti nomita "* .def") povas esti uzata por krei importan bibliotekon kun "dlltool" aŭ povas esti uzata kiel referenco al aŭtomate aŭ implicite eksportitaj simboloj.

- -dosiera dosiero

La ligilo kreos la dosieron- dosieron, kiu enhavos importan lib-respondaĵon al la DLL, kiun la ligilo generas. Ĉi tiu import-lib (kiu devus esti nomata "* .dll.a" aŭ "* .a" povas esti uzata por ligi klientojn kontraŭ la DLL generita; ĉi tiu konduto ebligas salti apartan paŝon "dlltool".

--enable-auto-bildo-bazo

Aŭtomate elektu la bazan bildon por DLLs, se oni ne specifas per la argumento "--image-bazo". Per uzado de hash generita de la nomo por krei unikajn bildajn bazojn por ĉiu DLL, oni povas eviti koliziojn en memoro kaj translokigoj, kiuj povas prokrasti programan ekzekuton.

--disable-auto-image-bazo

Ne aŭtomate generi unikan bildan bazon. Se ne ekzistas baza bildo bazita por uzanto ("--image-base") tiam uzu la platformon defaŭlta.

--dll-search-prefix string

Kiam ligi dinamike al dll sen importa biblioteko, serĉu " .dll" prefere al "lib .dll". Ĉi tiu konduto permesas facilan distingon inter DLLs konstruitaj por la diversaj `'subformoj': denaska, cikvino, uwin, pw, ktp. Ekzemple, cygwin DLLs kutime uzas" --dll-search-prefix = cyg ".

--enable-aŭtomata-importado

Faru kompleksan ligon de "_symbol" al "__imp__symbol" por DATA-importoj de DLLs, kaj kreu la necesajn sencajn simbolojn kiam konstruado de la importaj bibliotekoj kun tiuj DATAexportoj. Ĉi tio ĝenerale nur funkcios - sed kelkfoje vi povas vidi ĉi tiun mesaĝon:

"variablo" 'ne povas esti aŭtomata-importita. Bonvolu legi la dokumentadon por "-enable-auto-importado" de dd por detaloj. "

Ĉi tiu mesaĝo okazas kiam iu (sub) esprimo aliras al adreson finfine donita per la sumo de du konstantaj (Win32-importaj tabloj nur permesas unu). La instancoj, kie tio okazas inkluzivas aliron al membraj kampoj de strukturaj variabloj importitaj de DLL, kaj ankaŭ uzanta konstantan indekson en tabelo-variablon importitan de DLL. Ajna multoborda variablo (arrays, structs, long long, ktp) povas deĉenigi ĉi tiun eraran kondiĉon. Tamen, sendepende de la ĝusta datumtipo de la kriminala eksportita variablo, Id ĉiam detektos ĝin, elsendos la averton kaj eliros.

Ekzistas pluraj manieroj trakti ĉi tiun malfacilaĵon, sendepende de la datumtipo de la eksportita variablo:

Unu vojo devas uzi --ŝaltilon-runtime-pseudo-relokŝaltilo. Ĉi tio lasas la taskon agordi referencojn en via kliento-kodo por runtime environment, do ĉi tiu metodo funkcias nur kiam runtime environtment subtenas ĉi tiun funkcion.

Dua solvo estas devigi unu el la 'konstantaj' esti variablo --- tio estas, nekonata kaj ne-optimumigebla ĉe tempo de kompilaĵo. Por tabeloj, estas du ebloj: a) fari la indeksan (la adreson de la tabelo) variablo, aŭ b) faru la 'konstanta' indekso variablo. Tiel:

ekstera tipo extern_array []; extern_array [1] -> {fleksebla tipo * t = extern_array; t [1]}

ekstera tipo extern_array []; extern_array [1] -> {volatile int t = 1; extern_array [t]}

Por strukturoj (kaj plej multaj aliaj multobordaj datumtipoj) la sola opcio estas fari la strukturon (aŭ la longan longan aŭ la ...) variablo:

ekstera strukturo s extern_strukt; extern_struct.field -> {volatile struct s * t = & extern_struct; t> kampo}

ekstera longa longa ekstera; extern_ll -> {volatile long long * local_ll = & extern_ll; * loka_ll}

Tria metodo por trakti ĉi tiun malfacilaĵon estas forlasi 'auto-importadon' por la ofenda simbolo kaj marki ĝin per "__declspec (dllimport)". Tamen, en la praktiko, kiu bezonas uzi kompil-tempon #defines por indiki ĉu vi konstruas DLL, konstruante klientan kodon kiu ligas al la DLL, aŭ simple konstruas / ligas statikan bibliotekon. Elektinte la diversajn metodojn por solvi la 'rektan adreson kun konstanta kompensa problemo', vi devus konsideri tipan realan uzadon:

Originala:

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

Solvo 1:

--foo.h extern int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {/ * Ĉi tiu rezervo estas por win32 kaj cygwin; ne "optimumigi" * / volátil int * parr = arr; printf ("% d \ n", parr [1]); }

Solvo 2:

--foo.h / * Noto: auto-eksportado estas supozita (ne __declspec (dllexport)) * / #if (difinita (_WIN32) || difinita (__ CYGWIN__)) && \! (difinita (FOO_BUILD_DLL) || difinita (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]); }

Kvara vojo por eviti ĉi tiun problemon estas re-kodigi vian bibliotekon por uzi funkciajn interfacojn prefere ol datuminterfaco por la krimaj variabloj (ekz. Set_foo () kaj get_foo () accessor-funkcioj).

--disable-auto-importado

Ne provu fari sofista ligo de "_symbol" al "__imp__symbol" por DATAimports de DLLs.

--enable-runtime-pseudo-reloc

Se via kodo enhavas esprimojn priskribitajn en --enable-auto-importa sekcio, tio estas, DATAimports de DLL kun ne-nula kompenso, ĉi tiu ŝaltilo kreos vektoron de 'runtime pseudo relocations', kiu povas esti uzata per runtime-medio por ŝanĝi referencojn al tiaj datumoj en via kliento-kodo.

--disable-runtime-pseudo-reloc

Ne kreu pseŭdajn translokiĝojn por ne-nula kompensaj DATA-importaĵoj de DLLs. Ĉi tio estas la defaŭlta.

--enable-ekstra-pe-debug

Montri pliajn debug-informojn rilatigitaj al aŭtomata simbolo.

- sekcio-alineación

Agordas la sekcion alineación. Sekcioj en memoro ĉiam komencos ĉe adresoj, kiuj estas multnombraj de ĉi tiu nombro. Defaŭltas al 0x1000.

- Rezerva rezervo

- Rezerva rezervo , faru

Indiku la kvanton de memoro por rezervi (kaj laŭvole fari) esti uzata kiel stako por ĉi tiu programo. La defaŭlto estas 2Mb rezervita, 4K farita.

--subsistemo kiu

--subsystem kiu : plej granda

--subsystem kiu : plej granda . plej malgranda

Specifas la subsistemon sub kiu via programo ekzekutos. La juraj valoroj por kiuj estas "indiĝenoj", "fenestroj", "konzolo", kaj "posikso". Vi eble laŭvole agordis la subsistemon-version ankaŭ.

Grava: Uzu la komandon ( % viro ) por vidi kiel komando estas uzata en via komputilo.