Linux / Unix Command: Id

NAME

ld - Usebenzisa i-LD , isixhumanisi se- GNU

SYNOPSIS

ld [ izinketho ] izichaso ...

INKCAZELO

ld idibanisa inombolo yezinto kunye neefayili zengqolowa, igxotha idatha yazo kwaye idibanisa izikhombisi zecatshulwa. Ngokuqhelekileyo inyathelo lokugqibela ekuqulunqeni inkqubo kukuqhuba i-ld .

ld yamkela iiFayili zoLwimi zoLwazi lweZilawuli ezibhalwe kwi-superset ye-AT & T ye-Link Editor Command Language syntax, ukubonelela ngokucacileyo nokulawula ngokupheleleyo kwinkqubo yokuxhuma.

Ikhasi lomntu alichazi ulwimi lomyalelo; ubone ukungena kwe- ld kwi "info", okanye incwadana ye-ld: i- GNU linker, ukuze ufumane iinkcukacha ezipheleleyo kwiilwimi zomyalelo nakweminye imiba ye-GNU linker.

Le nguqulo ye- ld isebenzisa iinjongo eziqhelekileyo zamathala eencwadi ze-BFD ukusetyenziswa kwiifayile zezinto. Oku kuvumela ld ukufunda, ukudibanisa, nokubhala iifayile zezinto kwiifom ezininzi ezahlukeneyo, umzekelo, i- COFF okanye "a.out". Ifomathi ezahlukeneyo zingadibaniswa kunye ukuvelisa nayiphi na ifayile yezinto ezikhoyo.

Ngaphandle kokuguquguquka kwayo, isixhumanisi se-GNU sinceda kunokuba ezinye izixhumanisi ekuboneleleni ngolwazi lokuxilonga. Uninzi lwabaxhasi bayeka ukukhawuleza xa behlangabezana nephutha; xa kunokwenzeka, i- ld iyaqhubeka isebenza, ikuvumela ukuba ubone ezinye iimpazamo (okanye, kwezinye iimeko, ukufumana ifayile yefayile ngaphandle kwephutha).

Umxhumanisi we- GNU ld uthetha ukuhlanganisa uluhlu olubanzi lweemeko, kwaye ukuba luhambelane ngokusemandleni kunye nezinye izixhumanisi. Ngenxa yoko, uninzi ukhetho lokulawula ukuziphatha kwalo.

IMISEBENZI

I-linker isekela i-plethora yokukhetha umgca-myalelo , kodwa ekusebenzeni ngokwenene ambalwa asetshenziswe kuyo nayiphi na imeko ethile. Ngokomzekelo, ukusetyenziswa rhoqo kwe- ld kukudibanisa iiifayile ze-unix eziqhelekileyo kwi- Unix system , exhaswayo. Kuloo nkqubo, ukudibanisa ifayile "hello.o":

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

Oku kuchaza i-ld ukuvelisa ifayile ebizwa ngokuba yiphumo njengesiphumo sokudibanisa ifayile "/lib/crt0.o" kunye ne "hello.o" kunye nelayibrari "libc.a", eya kuvela kwiirejista zokusesha eziqhelekileyo. (Jonga ingxoxo ye-- y option engezantsi.)

Ezinye zeendlela zokulawula umgca kwi- ld zinokuthi zichazwe kunoma naluphi umgca kumgca womyalelo. Nangona kunjalo, ukhetho olubhekiselele kwiifayili, ezifana -l okanye -T , yenza ukuba ifayile ifakwe kwinqanaba apho ukhetho luvela kumgca womyalelo, ngokumalunga neefayile zezinto kunye nezinye iindlela zefayile. Ukuphinda ukhetho olungenayo ifayile kunye neengxabano ezahlukileyo akuyi kuba nempembelelo engaphezulu, okanye ukugqithisa iziganeko zangaphambili (ezo ezisekhohlo ngakwesobunxele kumgca womyalelo) waloo ndlela. Izinketho ezinokuthi zichazwe ngokuthe ngakumbi ngaphezu kweyodwa zichazwe kwiingcaciso ezingezantsi.

Iingcamango ezingakhethiyo ziifayile zezinto okanye iifolda eziza kudibaniswa kunye. Bangayilandela, bangaphambili, okanye baxutywe kunye neenketho zomgca-myalelo, ngaphandle kokuba ingxabano yefayile yezinto ayinakubekwa phakathi kwenketho kunye nengxabano yayo.

Ngokuqhelekileyo i-linker ifunyenwe ubuncinane kunye nefayili enye into, kodwa ungacacisa ezinye iifayile zefayili zengeniso zobunono usebenzisa i -l , -R , kunye nolwimi lomyalelo weskripthi. Ukuba akukho zifayile zengeniso zobunono ezicacileyo zicacisiwe, i-linker ayivelisi nayiphi na imveliso, kwaye ihambisa imiyalezo Akukho fayile yefayile .

Ukuba umnxibelelwano akakwazi ukuqonda ifomathi yefayili yento, kuya kuthathwa ukuba i-linker script. Iskripthi esicacisiwe ngale ndlela siqulunqa iskripthi esiqakathekileyo esixhunyanisiweyo esisetyenzisiweyo (okanye iskripthi esixhomekeke kuso okanye enye ecaciswe ngokusebenzisa -T ). Lo mqathango uvumela umnxibelelisi ukuba axhumane nefayile ebonakala ngathi yinto okanye ingqolowa yolondolozo, kodwa empeleni ichaza ezinye iimpawu zophawu, okanye isebenzisa "INPUT" okanye "GROUP" ukulayisha ezinye izinto. Qaphela ukuba ukucacisa iskripthi ngale ndlela kuvele nje ngokubamba iqhosha lokuqhagamshelanisa eliphambili; sebenzisa i- T yokukhetha ukutshintsha iskripthi esixhomekeke kuyo.

Ngeenketho zamagama abo ziluhlu olulodwa, ukhetho lwamacebo kufuneka lulandele incwadi yenketho ngaphandle kokungena kwi-whitespace, okanye unikezwe ngeengxabano ezihlukeneyo ngokukhawuleza emva kokukhetha okufunekayo.

Ngeenketho zabo amagama anobuninzi beeleta, enye idata okanye ezimbini zingahamba phambi kwegama lokukhetha; umzekelo, -i-symbol- andtrace-symbol ifana. Qaphela - kukho enye into ngaphandle kwalo mgaqo. Izinketho zamagama ezininzi eziqala ngecala elincinane 'o' lingaqulunqwa kuphela ngamatye amabini. Oku kukunciphisa ukudideka kunye ne -o khetho. Ngoko umzekelo -omagic usetha igama lefayile yefayile kumlingo ngelixa i- oomagic isetha ifulegi ye-NMAGIC kwimveliso.

Iingqungquthela kwiinketho ezininzi zeetekisi kufuneka zihlukane kunye negama lokukhetha ngamagama alinganayo, okanye zinikezwe njengeengxabano ezahlukileyo emva kokukhethwa kokuzifunayo. Umzekelo, i -foo-symbol symbol kunye ne -trace-symbol = foo zilingana. Izifinyezo ezikhethiweyo zamagama ezinketho zeetekisi ezininzi zamkelwe.

Qaphela - ukuba i-linker isetyenziswe ngokuchanekileyo, ngokusebenzisa umqhubi wecompil (umz. Gcc ) ke zonke iinqununu zomyalelo we-linker kufuneka zifakwe ngaphambili -Wl, (okanye nayiphi na into efanelekayo kumqhubi othile wenkampani) njengale:

gcc -Wl, - iqela lokuqalisa foo.o bar.o -Wl, - i-groupgroup

Oku kubalulekile, kuba kungenjalo inkqubo yoqhubi yomqambi ingayilahla ngokuzenzekelayo izinketho zekhonkco, ezibangele ikhonkco elibi.

Nantsi itheyibhile yomatshini womyalelo oqhelekileyo owamukelwe ngumxhasi we-GNU:

-igama elingundoqo

Olu khetho luxhaswa kwi-HP / UX ukuhambelana. I-argument yegama eliphambili kufuneka ibe enye yezintambo zokugcinwa kwengqolowa , ezabelwana , okanye ezingagqibekanga . -aarchive isebenza ngokulinganayo ne- Bstatic , kunye namanye amagama angundoqo asebenza ngokulinganayo -Bdynamic . Olu khetho lunokusetyenziswa naliphi inani lamaxesha.

- I zakhiwo

--architecture = izakhiwo

Ngoku kukhutshwa kwe- ld , olu khetho luncedo kuphela kwintsapho ye-Intel 960 yee-architectures. Kulo lwakhiwo lwe- ld , ingxabano yokwakha ichonga ubugcisa bokwakheka kwintsapho ye-960, ivumela ezinye iindawo zokukhusela nokuguqula indlela yokukhangela ithala leencwadi.

Ukukhishwa kwexesha elizayo kwe- ld kunokuxhasa ukufana okufanayo nakwezinye iintsapho zokuzakhela.

-b kubhala -fomati

--format = ifomati yokufaka

ld inokuqwalaselwa ukuba isekele ngaphezu kweyodwa uhlobo lwefayile yezinto. Ukuba i- ld yakho iqulunqwe ngale ndlela, unokusebenzisa i-- b inkcazo ukuchaza ifomathi yebhanari yefayili yezinto ezifakwayo ezilandelayo olukhetho kumgca womyalelo. Ngaphandle kokuba i- ld iqulunqwe ukuxhasa ezinye iifom zezinto, akufaneki ukuba ucacise oku, njengoko ld kufuneka ilungiselelwe ukuba ilindele njengefom yokufakelwa engagqibekanga kwifom eqhelekileyo kumatshini ngamnye. ifomathi yenkxaso yintambo yombhalo, igama lefomathi ethile exhaswa ngamathala eencwadi e-BFD. (Unokwenza uludwe lweefom zobhaliweyo ezikhoyo kunye ne- objdump -i .)

Unokufuna ukusebenzisa olu khetho ukuba unxulumanisa iifayile kunye nefomathi engavumelekanga. Ungasebenzisa kwakhona -b ukutshintsha amafomathi ngokucacileyo (xa udibanisa iifayile zeefomati ezahlukeneyo), ngokubandakanya -bb input-format ngaphambi kweqela ngalinye leefayile zefayile kwifomathi ethile.

Ifomati engagqibekanga ithathwa kwimo yendalo "GNUTARGET".

Ungakwazi kwakhona ukuchaza ifomathi yokufaka kwi-script, usebenzisa umyalelo othi "ITARGET";

-c i- MRI-commandfile

- mri-script = iifayile ze-MRI

Ukuhambelana nezixhumanisi eziveliswe yi-MRI, ld iyakwamukela iifayile ezibhalwe kwimiyalelo emiselweyo, ulwimi olulinganiselwe ulwimi, oluchazwe kwicandelo le-Script Files Compatible Script files kwi-GNU ld documentation. Qalisa iifayile ze-MRI ngeenketho -c ; sebenzisa i- T inketho yokusebenzisa izikripthi ze-linker ezibhaliweyo ngolwimi lwe- ld script script. Ukuba i- MRI-cmdfile ayikho, i- ld ibhekisela kuyo kwiinkcukacha ezichazwe yiphina -Izikhetho .

-d

-dc

-dp

Ezi ndlela zintathu zilingana; iifom ezininzi ziyaxhaswa ngokuhambelana nezinye izixhumanisi. Banika indawo kwiimpawu eziqhelekileyo nokuba ngaba ifayile ephumayo ifakwe (nge -r ). Umyalelo weskripthi "FORCE_COMMON_ALLOCATION" unempembelelo efanayo.

-ngena

-entente = ukungena

Sebenzisa ukungena njengophawu olucacileyo lokuqalisa inkqubo yakho, kunokuba ungenayo indawo yokungena. Ukuba akukho na uphawu olungenayo ukungena , i-linker izakuzama ukungena ngokungena kwinombolo, kwaye isebenzise okokuba idilesi yokungena (inombolo iya kutshilwa kwisiseko 10; ungasebenzisa u- 0x okhokelayo kwisiseko 16, okanye ukhokela phambili 0 ngesiseko 8).

-E

-export-dynamic

Xa udala i-dynamically linked connection, yongeza zonke iisimboli kwitheyibhile yetsingiselo. Itheyibhile yetsingiselo eguqukileyo isethi yempawu ezibonakalayo kwizinto ezinamandla ngexesha lokusebenza.

Ukuba awusebenzisi le ndlela, itafile yetshintshi eguqukileyo iya kubamba kuphela ezo zibonakaliso ezibhekiselelwe kwenye into echanekileyo ekhankanywe kwikhonkco.

Ukuba usebenzisa "dlopen" ukulayisha into eguqukayo efuna ukubuyela kwiimpawu ezichazwe yiprogram, kunokuba kukho enye into enamandla, mhlawumbi kufuneka usebenzise olu khetho xa udibanisa inkqubo ngokwayo.

Ungasebenzisa kwakhona iskripthi sobungqina ukulawula ukuba ziphi iimpawu kufuneka zongezwe kwitheyibhile yetshintshi eguqukayo ukuba ifomathi yokuvelisa ixhase. Bona inkcazo ye -verver-script ku @ ref {VERSION}.

-EB

Qhagamshelana nezinto ezinkulu ze-edian. Oku kuchaphazela ifomathi yokuphuma engapheliyo.

-EL

Qhagamshelana nezinto ezincinci. Oku kuchaphazela ifomathi yokuphuma engapheliyo.

-f

igama elongezelelweyo

Xa udala into ekwabelwana ngayo ye-ELF, faka insimu yangaphakathi ye-DT_AUXILIARY kwigama elichaziweyo. Oku kuchaza isixhumanisi esinamandla ukuba ifayile yefayile yento ebelwanayo ifanele isetyenziswe njengesihlomelo esincedisayo kwitheyibhile lesimboli yegama legama elibiweyo.

Ukuba emva koko udibanisa inkqubo malunga nale nto yefayile, ngoko, xa uqhuba le program, isixhumanisi esinamandla siya kubona i-DT_AUXILIARY field. Ukuba umnxibelelwano onamandla ugqibezela naziphi na iimpawu ezisuka kwisixhobo sokucoca, kuya kuqala ukujonga ukuba kukho inkcazo kwigama legama elibiweyo. Ukuba kukho enye, iya kusetyenziselwa endaweni yenkcazo kwisixhobo sokucoca. Igama lento ebelwanayo akumele ikhona. Ngaloo ndlela igama legama elibiweyo lingasetyenziselwa ukunikezela ukuphunyezwa okunye kwemisebenzi ethile, mhlawumbi ukulungiswa komsebenzi okanye ukusebenza komshini othile.

Olu khetho lunokucaciswa ngaphezu kweyodwa. Izicelo zeDT_AUXILIARY ziya kudalwa ngendlela ebonakala ngayo kumgca womyalelo.

-F igama

igama lefayile

Xa udala into ebelwana ngayo ye-ELF, faka i-DT_FILTER yangaphakathi kwimihlaba kwigama elichaziweyo. Oku kuchaza isixhumanisi esinamandla ukuba ithebula lesimboli yento ebelwanayo ebalwayo kufuneka isetyenziswe njengefayile kwifayile yecatshulwa yegama legama elibiweyo.

Ukuba emva koko udibanisa inkqubo malunga nale nto yefayile, ngoko, xa uqhuba le program, isixhumanisi esinamandla siya kubona i-DT_FILTER intsimi. Isixhumanisi esinamandla siza kusombulula iimpawu ngokubhekiselele kwitheyibhile yelitayile yezinto ezicwangcisiweyo njengesiqhelo, kodwa ziya kudibanisa neenkcazo ezitholakala kwigama legama elibiweyo. Ngaloo nto into ecocekileyo ingasetyenziselwa ukhetha i-subset yeempawu ezibonelelwe igama .

Abanye abaxhasi bamandulo basebenzise i-- F inketho kulo lonke iqhosha lokuqulunqwa kweenkcukacha ngokucacisa ifom yefayile yezinto-nto zombini kunye neefayile zezinto ezivelisiweyo. Umxhumanisi we-GNU usebenzisa ezinye iindlela zeli njongo: i- b , - indlela , i- form , i-"TARGET" umyalelo kwiempendulo zekhonkco, kunye ne-"GNUTARGET" yendalo. Umnxibelelisi we-GNU uya kuhoywa i-option ye -F xa engavelanga into ebelwana ngayo ye-ELF.

igama legama

Xa udala i-ELF into ebenziweyo okanye eyabelwe, shayela u-NAME xa into ephumelelayo okanye ebelwanayo ilayishiwe, ngokubeka iDT_FINI kwidilesi yomsebenzi. Ngokungagqibekanga, i-linker isebenzisa "_fini" njengomsebenzi wokufownela.

-g

Ukunyamekela. Kunikezelwe ukuhambelana namanye amathuluzi.

-G xabiso

--gpsize = xabiso

Hlela ubungakanani obukhulu bezinto ukulungiswa usebenzisa irejista ye-GP kwisayizi . Oku kuthetha kuphela kwiifom zefayile ezifana ne-MIPS ECOFF exhasa ukubeka izinto ezinkulu kunye ezincinci kumacandelo ahlukeneyo. Oku kunganyanzelwanga kwezinye iifayile zefayile.

-igama

-soname = igama

Xa udala into ebelwana ngayo ye-ELF, setha insimu yangaphakathi ye-DT_SONAME kwigama elikhankanyiweyo. Xa i-executable idibene nento ebelwanayo eneenkcukacha zeDT_SONAME, ngoko xa i-executable isebenzayo i-linker idibanisa izama ukulayisha into ebelwanayo echazwe yinkalo ye-DT_SONAME kunokuba isebenzise igama lefayile elinikezelwe kwisixhumanisi.

-i

Yenza ikhonkco elongezelelweyo (efanayo nekhetho -r ).

-igama

Xa udala i-ELF into ebenziwayo okanye eyabelwe, fonela u-NAME xa into eyenzayo okanye ebelwanayo ilayishiwe, ngokusetha i-DT_INIT kwidilesi yomsebenzi. Ngokungagqibekanga, i-linker isebenzisa "_init" njengomsebenzi wokufownela.

-l yolondolozo

- ubhaliso = inqolobane

Yongeza i- archive yefayile yovimba kwiluhlu lweefayili zokudibanisa. Olu khetho lunokusetyenziswa naliphi inani lamaxesha. ld iya kukhangela uluhlu lwayo lweendlela zokuvela kwe "libarchive.a" kuzo zonke iinkcukacha ezigciniweyo ezicacisiweyo.

Kwiinkqubo ezixhasa iilayibrari ezabelwana ngazo, ld unokuphangela iilayibrari kunye nezandiso ngaphandle kwe ".a". Ngokukodwa, kwiinkqubo ze-ELF kunye ne-SunOS, ld izakufuna uphando kwilayibrari kunye nokongezwa kwe ".so" ngaphambi kokufuna enye kunye nokongezwa kwe ".a". Ngqungquthela, i ".so" isandiso ibonisa ilayibrari eyabelwe.

I-linker izakukhangela i-archive kanye kuphela, kwindawo ekuchazwe ngayo kumgca womyalelo. Ukuba i-archive ichaza uphawu olungazange lufakwe kwizinto ezithile ezavela phambi kwendawo yokugcina yomgca womyalelo, i-linker iya kufaka iifayile ezifanelekileyo kwi-archive. Nangona kunjalo, isimboli esingachazwanga kwinto ebonakala kamva kumgca wemiyalelo ayiyi kubangela ukuba umnxibelelwano uphinde afune uphando kwakhona.

Jonga i- ( ukhetho malunga nendlela yokunyanzela unxibelelwano ukukhangela i-archives izikhathi ezininzi.

Ungabhala uluhlu olufanayo lweengqolowa ezininzi kwixesha lomyalelo.

Olu hlobo logcino lwe-archive luyimfuneko kwi-Unix linkers. Nangona kunjalo, ukuba usebenzisa i- ld onAIX, phawula ukuba ihluke kwihambo ye-AIX.

-Ukukhangela

- umgca-umkhondo = uphando

Yongeza indlela yokukhangela kuluhlu lweendlela eziza kukhangela iilayibrari zengqolowa kunye neempendulo ze- ld zolawulo. Ungasebenzisa olu khetho naliphi inani lamaxesha. Ezi ngcaciso zicatshulwa ngendlela echazwe ngayo kumgca womyalelo. Izalathisi ezichazwe kumgca womyalelo zicatshungulwa phambi kweengxelo ezimileyo. Zonke -Izikhetho zisebenza kuzo zonke -izinketho , kungakhathaliseki ukuba umyalelo apho ukhetho luvela khona.

Ukuba i- searchdir iqalisa nge "=", ngoko "i" = "iya kutshintshwa ispredishithi ye sysroot , indlela echazwe xa ikhonkco iqulunqwe.

Isethi engagqibekanga yendlela efunyenwe (ngaphandle kokucaciswa kunye ne -L ) kuxhomekeke kuyo imodeli yokulumbulula ld isebenzisa, kwaye kwezinye iimeko kwakhona kwindlela esilungiselelwe ngayo.

Iindlela zingachazwa kwakhona kwiskripthi sekhonkco kunye nomyalelo we "SEARCH_DIR". Izalathisi ezichazwe ngale ndlela zicatshulwa kwindawo apho i-script linker ivela kumgca wokula.

-m emulation

Gxininisa umxhasi wokuxuba. Ungabhala uluhlu lwemimiselo ekhoyo kunye ne- optionbo - orV .

Ukuba i-- m inketho ayisetyenzisiwe, ukugqithiswa kuthathwa kwi-"LDEMULATION" kwimo engqongileyo, ukuba kuchazwa oko.

Ngaphandle koko, ukulandelelana okungagqibekanga kuxhomekeke kwindlela ikhonkco edibene ngayo.

-M

imephu yeprint

Phrinta imephu yekhonkco kwi-output standard. Imephu yokudibanisa inikeza ulwazi malunga nekhonkco, kubandakanywa oku kulandelayo:

*

Apho iifayile zezinto kunye neempawu zifakwe kwimemori.

*

Ziyabelwe njani iimpawu eziqhelekileyo.

*

Wonke amalungu e-archive afakwe kwikhonkco, ngokukhankanywa kwesimboli ebangela ukuba ilungu lomgcini-mali lenziwe.

-n

- nmagic

Vala ukulungiswa kwephepha lamacandelo, kwaye umake umphumo "njenge-NMAGIC" ukuba kunokwenzeka.

-N

--omagic

Beka icandelo leetekisi kunye nedatha ukuze lifundeke kwaye libhaliselwe. Kwakhona, musa ukukhawulelana nekhasi lwedatha, kwaye ukhubaza ukudibanisa neelayibrari ezabelwana ngazo. Ukuba ifomati yefomathi isekela iinombolo zamagqabantshi ze Unix, phawula umphumo njenge "OMAGIC".

- engekho omagic

Le khetho ayinanto enkulu kwimiphumo ye -NN inketho. Isetha icandelo lesicatshulwa ukuba lifundwe kuphela, kwaye ibambe iqela leenkcukacha ukuba lilungele iphepha. Qaphela - olu khetho aluvumeli ukudibanisa neelayibrari ezabelwana ngazo. Sebenzisa -Bdynamic kule nto.

-iziphumo

- output = output

Sebenzisa ukuphuma njengegama leprogram eveliswa ngu- ld ; ukuba olu khetho alunacacisiwe, igama elithi.out lisetyenziswe ngokungagqibekanga. Umyalelo weskripthi "I-OUTPUT" ingacacisa igama lefayile yefayile.

-O nqanaba

Ukuba inqanaba lixabiso leenani elikhulu kune-zero ld lilungisa umphumo. Oku kungathatha ixesha elide kwaye ngoko ke kufuneka ukuba kunikwe amandla kuphela ekugqibeleni.

-q

ukufuduka

Ikhefu lokuthutha indawo kunye nokuqulathwe ngokuxhomekeke ngokupheleleyo. Uhlalutyo lokuthunyelwa kwekhonkco kunye nezixhobo zokwenza ubuchule lungadinga le ngcaciso ukuze kwenziwe ulungiso oluchanekileyo lwee-executables. Oku kubangela kwii-executable ezinkulu.

Olu khetho lusexhaswa kuphela kwiipulatifomu ze-ELF.

-r

ukulungiswa

Ukuvelisa umkhiqizo ongenakufuduswa-oko kukuthi, ukuvelisa ifayile ekhuphayo leyo ingasebenza njengegalelo kwi- ld . Oku kudla ngokuba kubizwa ngokuqhagamshelana . Njengempembelelo yecala, kwiimeko ezixhasa amanqanaba omlingo we Unix, olu khetho lukwaseta nenombolo yomyalezo wefayile ethi "OMAGIC". Ukuba olu khetho aluchaziwe, ifayile epheleleyo iveliswa. Xa udibanisa iinkqubo zeC ++, olu khetho aluyi kusombulula iingxelo kubakhi; ukwenza oko, sebenzisa -Uku .

Xa ifayile yefayile engenayo ifomati efanayo nefayili yokuphuma, ukuxhunyaniswa kwamanqaku kuphela kuxhaswa ukuba ifayile yefayile ayinayo nayiphi na indawo yokufuduswa. Izifomathi ezahlukeneyo zokuvelisa zinokuthi zithintele ezinye izithintelo; Ngokomzekelo, ezinye iifomati ezingezantsi zixhaswa ngokukodwa kunye neefayile zokufakwayo kwezinye iifom.

Le khetho yenza into efanayo -i .

-Igama lefayile

- engumqondiso = igama lefayile

Funda amagama angamatshwayo kunye neadesi zabo kwigama lefayile , kodwa musa ukuyihambisa okanye ukuyifaka kwimveliso. Oku kuvumela ifayile yakho yokuvelisa ukuba ibhekise ekufanekiseni kwiindawo ezikhoyo zeememori ezichazwe kwezinye iiprogram. Ungasebenzisa olu khetho ngaphezu kweyodwa.

Ukuhambelana nezinye izixhumanisi ze-ELF, ukuba i -R inketho ilandelwa ligama lolawulo, kunokuba igama lefayile, liphathwe njenge-- path option.

-s

zonke izinto

Thumela yonke ingcaciso yesimboli kwifayili yokuphuma.

-S

ukuhlukumeza

Ukuthumela ulwazi lwefayile ye-debugger (kodwa kungekhona zonke iimpawu) ukusuka kwifayile yokuphuma.

-t

--trace

Phrinta amagama eefayile zengeniso njengoko ld ibenza.

-Ifayile yesibhalo

- script = scriptfile

Sebenzisa i-script efayile njenge-linker script. Le script ithatha indawo ye- ld 's default linker script (kunokuba yongeze kuyo), ngoko i- commandfile kufuneka icacise yonke into efunekayo ukuchaza ifayile yefayile. Ukuba isicatshulwa script asikho kwirejista yangoku, "i-ld" iyayibheka kwiinkcukacha ezichazwe naluphi na olukhethwa ngaphambili. Iinqununu -Izikhetho ze-T ziqokelela.

- uphawu

- engabonakali = uphawu

Isimboli yamandla ukuba singeniswe kwifayile yefayile njengefayile engachazwanga. Ukwenza oku, umzekelo, kunokubangela ukudibanisa iimodyuli ezongezelelweyo kwiilayibrari eziqhelekileyo. -nokuphinda ulandelelwe ngeendlela ezahlukeneyo zokungena kwiifayile ezingeziwe. Eli khetho lilingana nomyalelo we-"EXTERN" we-linker script.

-Ur

Kunto nayiphi na enye ngaphandle kweenkqubo zeC ++, olu khetho lilingana no -r : lwenza i-output-shift output-ie, ifayile ephumayo enokuthi isebenze njengegalelo kwi- ld . Xa udibanisa iinkqubo zeC ++, -Ur ulungisa izikhombisi kubakhi , ngokungafani -n . Akusebenzi ukusebenza -Kukhupha kwiifayile ezixhumene nazo -Uku ; xa itheyibhile yomakhi lakhiwe, ayinakongezwa. Sebenzisa -Ukuphela kwesiqhagamshelo sokugqibela esinqununu, kunye-nabanye.

--unombolo [= ISIGABA ]

Idala icandelo lezityalo ezihlukeneyo kwicandelo ngalinye lokufakana elihambelana neCANDELO , okanye ukuba i-wildcard yokukhetha i- SECTION argument ishiywe, kwinqanaba lokufakelwa kwenkedama. Icandelo leenkedama linye lingakhankanywe ngokuthe ngqo kwisikripthi sokuxhuma. Ungasebenzisa olu khetho ngamaxesha amaninzi kumgca womyalelo; Ithintela ukuhlanganiswa okuqhelekileyo kwamacandelo okufaka igama elifanayo, iindibano zecandelo elivelisa iziphumo kwi-script linker.

-v

--verversion

-V

Bonisa inombolo yenguqu ye- ld . I-- V inketho iphinda icwangcise imilinganiselo exhasiweyo.

-x

- hlekisa-konke

Cima zonke iimpawu zendawo.

-X

- baxhasi-abahlali

Cima zonke iimpawu zendawo zisesigxina. Kwiithagethi ezininzi, ezi zonke iimpawu zendawo apho amagama abo aqala ngoL .

-isimboli

I -trace-symbol = uphawu

Phrinta igama nganye kwifayile edibeneyo apho uphawu luvela khona. Olu khetho lunokunikezwa nayiphi na inani lamaxesha. Kwiinkqubo ezininzi kunyanzelekile ukuba ulungiselele ukugxininisa.

Eli khetho luncedo xa unesimboli esingachazwanga kwikhonkco yakho kodwa awazi ukuba isalathiso ivela phi.

-Iyindlela

Yongeza indlela eya kwindlela yokukhangela yamathala epheleleyo. Olu khetho lukhoyo lweSolaris.

-igama elingundoqo

I-keywords eyaziwayo "yi-initfirst", "thintela", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "ngoku", "imvelaphi", "combreloc", "nocombreloc" kunye ne "nocopyreloc" ". Amanye amagama akwii-key akhankanywa kwi-Solaris. "initfirst" ibonisa into ekufuneka iqaliswe kuqala kwixesha lokuqalisa ngaphambi kweyiphi na into. "thintela" into ebonisa ukuba itheyibhile yayo isayinwa phambi kwazo zonke iisimboli kodwa i-primary executable. "loadfltr" ibonisa into yokuba iifayile zayo ziqwalaselwe ngokukhawuleza ngexesha lokusebenzisa. "nodefaultlib" ibonisa into yokuba ukukhangela izixhomekeke kule nto nayiphi na indlela yokukhangela ithala leencwadi. "udonse" ibonisa into akufanele ilayishwe ngexesha lokusebenza. "i-nodlopen" ibonisa into engekho ukuba "idle". "i-nodump" ibonisa into engayi kukhishwa yi "dldump". "ngoku" ibonakalisa into kunye nexesha elingaphandle livila elibophayo. "umvelaphi" ibonisa into enokuthi iqule i-ORIGIN. "ukuchaswa" kususa impawu ezingabonakaliyo. "i-muldefs" ivumela iinkcazo ezininzi. "i-combreloc" idibanisa iindawo ezininzi zokufuduka kwaye ibenzela ukuba benze uphawu lokutshintshana lokutshintshwa kwesikhenkethi.

"i-nocombreloc" inokukhubaza amanqaku amaninzi okuthutha. "i-nocopyreloc" ikhubaza ukuveliswa kwekopi yokufuduka.

- ( iirekhodi -)

iqela le- archive -end-group

I- archives kufuneka ibe uludwe lweefayile ezigcinwe kwi- archive . Zingaba ngamagama eefayile ezicacileyo, okanye i-options.

Ii-archives ezichongiweyo ziphandwa ngokuphindaphindiweyo kude kubekho izikhombisi ezintsha ezingabonakali. Ngokuqhelekileyo, i-archive isesha kanye kuphela kwindlela echazwe kumgca womyalelo. Ukuba uphawu kulondolozo lwengqolowa lufunekayo ukulungisa isimboli esingachazwanga esichazwe yinto egcinwe kwirekhodi evelayo kamva kumgca womyalelo, umnxibelelisi akayi kukwazi ukulungisa eso sabelo. Ngokwahlula i-archives, zonke ziphandwa ngokuphindaphindiweyo kude kube zonke izikhombisi ezikhoyo zixazululwe.

Ukusebenzisa olu khetho kunendleko enkulu yokusebenza. Kungcono ukuyisebenzisa kuphela xa kukho iingqungquthela ezingenakukhunjulwa phakathi kweengxelo ezimbini okanye ngaphezulu.

- yamkela-engenayo-engena-arch

Ukungabonakali-ukungenisa-engenayo-ingqamlezo

Uxelela umnxibelelisi ukuba amkele iifayile ezifakwayo ezingabonakaliyo izakhiwo. Ukucinga ukuba umsebenzisi uyazi oko bakwenzayo kwaye ufuna ngokuzikhethela ukudibanisa kule fayile yefayile engaziwayo. Oku kwakukuziphatha okungekho phantsi kwe-linker, ngaphambi kokukhululwa 2.14. Ukuziphatha okungagqibekanga ekukhutshweni kwe-2.14 ukuya phambili kukugatya iifayile zengeniso, kwaye ke ukhetho oluthile-olungenayo-input-arch longezwe ukubuyisela ukuziphatha kwangaphambili.

-ngenisa igama elingundoqo

Olu khetho lugqitywa ngokuhambelanayo kwe-SunOS .

-Bdynamic

-dy

-call_shared

Xhobisa kwiilayibrari ezinamandla. Oku kunentsingiselo kuphela kwiiplatifti apho iilayibrari ezabelwana ngazo zixhaswa. Olu khetho ngokuqhelekileyo lugqibekanga kwiindawo ezinjalo. Uhlu oluhlukileyo lwolu khetho luyahambisana nokusetyenziswa kweendlela ezahlukeneyo. Ungasebenzisa olu khetho ngamaxesha amaninzi kumgca womyalelo: ichaphazela ukukhangela iilayibrari -izinketho ezilandelayo.

-Iqela

Hlela "i-DF_1_GROUP" iflegi kwi "DT_FLAGS_1" yokungena kwicandelo elinamandla. Oku kubangela ukuba isixhumanisi sokuqalisa sisebenzise i-lookups kule nto kunye nokuxhomekeka kwayo okumele kwenziwe kuphela ngaphakathi kweqela. - engacacisiwe ingacacisiwe . Olu khetho lusetsingiselo kuphela kwiipulatifomu ze-ELF ezixhasa iilayibrari ezabelwana ngazo .

-Bstatic

-dn

-noku-

-iyo

Musa ukudibanisa neelayibrari ezabelwana ngazo. Oku kunentsingiselo kuphela kwiiplatifti apho iilayibrari ezabelwana ngazo zixhaswa. Uhlu oluhlukileyo lwolu khetho luyahambisana nokusetyenziswa kweendlela ezahlukeneyo. Ungasebenzisa olu khetho ngamaxesha amaninzi kumgca womyalelo: ichaphazela ukukhangela iilayibrari -izinketho ezilandelayo.

-Isiqhelo

Xa udala ilayibrari eyabelwe, ubophe iingxelo kwiimpawu zehlabathi kwiinkcazo kwilayibrari eyabelwe, ukuba kukho. Ngokuqhelekileyo, kunokwenzeka inkqubo edibeneyo kunye neelayibrari eyabelwe ngokubanzi ukugqithisa inkcazelo kwilayibrari eyabelwe. Olu khetho lunentsingiselo kuphela kwi-ELFplatforms exhasa iilayibrari ezabelwana ngazo.

amacandelo

-i-check-sections

Ucela umnxibelelisi ukuba angaqwalasele iidilesi zamacandelo emva kokuba abelwe ukuba abone ukuba kukho na ukugqithiswa. Ngokuqhelekileyo umnxibelelwano uya kwenza le ngotshe, kwaye ukuba ifumanisa nayiphi na i-overlaps iya kuvelisa imilayezo efanelekileyo yempazamo. I-linker iyazi malunga, kwaye ivumela izicwangciso kwiingqameko. Ukuziphatha okungapheliyo kungabuyiselwa ngokusebenzisa umgca womgca womyalelo .

--cref

Isiphumo somboniso wesithambiso. Ukuba ifayile ye-linker iveliswa, iteksi yokubhekisa yesiphambano iprintwe kwifayile yeemephu. Ngaphandle koko, iprintwe kwimveliso eqhelekileyo.

Ifomathi yetafile ilula ngokuzithandela, ukwenzela ukuba iqhutywe kalula ngesikripthi xa kuyimfuneko. Iimpawu ziprintwe, zihlulwe ngamagama. Kwisimboli ngasinye, uluhlu lwamagama eefayile lunikezelwa. Ukuba isimboli ichazwe, ifayile yokuqala ibhalwe yindawo yenkcazo. Iifayile ezisele ziqulethe iinkcazo kwisimboli.

engaziwayo-engaqhelekanga

Olu khetho luvimbela isabelo seedesi kwiimpawu eziqhelekileyo. Umyalelo weskripthi "INHIBIT_COMMON_ALLOCATION" unempembelelo efanayo.

I- option -no-define-common option ivumela ukutyhila isigqibo sokunikezela iidilesi kwiimpawu eziqhelekileyo ukusuka kukhetho lwefayile yefayile; ngenye indlela inkohlakalo engabonakaliyo yohlobo lwenkxaso yokunika idilesi kwiimpawu eziqhelekileyo. Ukusebenzisa i- non-define-common ivumela iimpawu eziqhelekileyo ezibhekiselwe kwiilayibrari eyabelwe ukuba zinikezelwe iidilesi kuphela kwinkqubo ephambili. Oku kuphelisa indawo engasetyenziswanga yilayibrari ekwabelwana ngayo, kwaye ikhusela nayiphi na idideko ekunqumeni kwisigqibo esingafanelekanga xa kukho iimodyuli ezininzi ezinamandla kunye nemigqaliselo ekhethiweyo yokuphenya isisombululo sophawu lwexesha lokusebenza.

uphawu lwe -defsym = ibonakaliso

Yenza isimboli sehlabathi kwifayili yokuphuma, equle idilesi epheleleyo enikezwe ngombonakalo . Ungasebenzisa olu khetho ngamaxesha amaninzi njengoko kuyimfuneko ukuchaza iimpawu ezininzi kumgca womyalelo. Uhlobo oluthile lwe-arithmetic luxhaswa kwintetho kulo mongo: unokunika isigxina se-hexadecimal okanye igama lesimboli esele ikhona, okanye sebenzisa "+" kunye "-" ukuba ungeze okanye ususe ii-constant hexadecimal okanye iimpawu. Ukuba ufuna iimpawu ezingakumbi, cinga ukusebenzisa ulwimi lomyalelo we-linker kwiskripthi. Qaphela: akufanele kubekho isikhala esimhlophe phakathi kwesimboli , uphawu olulinganayo (`` = ''), kunye nencoko .

- isidima [= isitayela ]

- ungadingi

Ezi zikhetho zilawule nokuba zichithwe amagama amatshwayo kwimilayezo yephutha kunye nezinye iziphumo. Xa i-linker ixelelwa ukuba idibanise, izama ukubonisa amagama angamatshwayo ngendlela efundwayo: ikhupha izikhokelo ezikhokelelayo xa zisetyenzisiwe kwifom yefayile, kwaye iguqula amagama e-symbol + angama-C ++ ngamagama afundwa ngumsebenzisi. Abaqulunqi abahlukeneyo baneendlela ezahlukeneyo zokutya. Ingxabano yesitayela yokuchithwa kwendlela yokuchithwa ngokuchanekileyo ingasetyenziselwa ukhetha isitayela esifanelekileyo sokumangalisa indawo ye-compiler yakho. Ikhonkco iya kuxhomekeka ngokungafiyo ngaphandle kokuba imeko yendawo eguqukayo COLLECT_NO_DEMANGLE isetyenziswe. Ezi zikhetho zingasetyenziselwa ukugqithisa ukungagqibekanga.

ifayili-linker

Beka igama loqhagamshelwano oluqinileyo. Oku kunentsingiselo kuphela xa kuveliswa iziphathamandla ze-ELF ezinamandla. Isiqhagamshelo esingaguqukiyo soqhagamshelwano siqhelekile; ungasebenzisi le nto ngaphandle kokuba wazi into oyenzayo.

-kufuduka-ukufuduka

Olu khetho lunentsingiselo kuphela xa kudibanisa i-MIPS ikhowudi ye-PIC edibeneyo, eveliswa yindlela yokwenza-i-pictured-pic kwi-GNU compiler kunye ne-assembler. Yenza ukuba i-linker yenze itafile engasetyenziswa ngexesha lokuqalisa ukufudula nayiphi na idatha eyayiqaliswa ngokukhawuleza kwiimpawu zephoyinter. Bona ikhowudi kwi testuite / ld-empic ngeenkcukacha.

- izilumkiso

Phatha zonke izilumkiso njengephutha.

i--force-exe-suffix

Qinisekisa ukuba ifayile yokuphuma ifanelekile .exe.

Ukuba ifayile ephumayo ngokuzenzekelayo idibeneyo ayikho "i- exe " okanye " .dll " isisombululo, olu khetho luya kukhuthaza umxhumanisi ukukopisha ifayile yokuphuma kwelinye igama elifanayo kunye ne ".exe". Olu khetho luncedo xa usebenzisa iifayile ze Unix ezingabonakaliyo kumphathi weMicrosoft Windows, kuba ezinye iinguqulelo zeWindows aziyi kuqhuba umfanekiso ngaphandle kokuba ziphela kwi-"exe ".

ii-gn-gc

candelo

Nika amandla ukuqokelela udoti ngamacandelo angenayo angasetyenziswa. Akunyanzelwanga kwiithagethi ezingayixhasi olu khetho. Olu khetho aluhambelani ne-- r , kwaye akufanele lisetyenziswe ngokuqhagamshelana okunamandla. Ukuziphatha okungagqibekanga ( kokungaqhubeki ukuqokelela udoti ) kungabuyiselwa ngokucacisa -i-gc-candelo kwicala lomyalelo.

--Nceda

Phrinta isishwankathelo seenketho zomgca-myalelo kwi-output standard kunye nokuphuma.

- ithagethi-uncedo

Phrinta isishwankathelo sazo zonke iinketho ezijoliswe kuzo ekuphumeni komgangatho kunye nokuphuma.

-Map mapfile

Phrinta imephu yekhonkco kwifayile yefayile . Jonga inkcazo ye- Mption , ngasentla.

- ingagcinanga imemori

ld ngokuqhelekileyo ilungiselela ukukhawuleza ekusebenziseni imemori ngokucima iitafile zecatshulwa zeefayile zengenayo kwimemori. Olu khetho luxelela i- ld endaweni yoko kulungiselelwe ukusetyenziswa kweememori, ngokuphinda uphinde ufunde iitafile zecatshulwa njengoko kuyimfuneko. Oku kungadingeka ukuba i- ld ikhuphe isikhala sememori ngelixa idibanisa inkulu enkulu.

- ayichazwanga

-s defs

Ngokuqhelekileyo xa udala ielayibrari eyabelwe iifayile ezingabonakaliyo, iimpawu ezingachazwanga zivunyelwe kwaye zishiywe ukuba zixazululwe ngumqhubi wexesha lokuqalisa. Ezi zikhetho zithintela iimpawu ezinjalo ezingachazwanga.

- vumela-inkcazelo-ezininzi

-z muldefs

Ngokuqhelekileyo xa uphawu luchazwa ngamaxesha amaninzi, umnxibelelwano uya kubika iphutha elibulalayo. Ezi zikhetho zivumela iinkcazelo ezininzi kunye nencazelo yokuqala iya kusetyenziswa.

- vumela-shlib-engachazwanga

Vumela iimpawu ezingabonakaliyo kwizinto ezabelwana ngazo nangona - ngaphandle kokuchaziweyo kusekwe. Umphumo womnatha uya kuba ukuba iimpawu ezingabonakaliyo kwizinto eziqhelekileyo ziya kuqhuba iiposiso, kodwa izinto ezingabonakaliyo kwizinto ezabelwana ngazo ziya kuhoywa. Ukuphunyezwa kwe-non-unfined kwenza ukuba kucinge ukuba i-linktime time linker iya kuphazamisa kwiimpawu ezingabonakaliyo. Nangona kukho ubuncinane inkqubo enye (i-BeOS) apho iifayile ezingabonakaliyo kwiilayibrari ezabelwana ngazo ziqhelekile ekubeni i-kernel ibafakela ngexesha lokulayisha ukukhetha ukuba yeyiphi imisebenzi efanelekileyo kakhulu kwi-architecture yangoku. IE ukhethe ngokufanelekileyo umsebenzi we memset. Kubonakala ukuba kuqhelekile ukuba i-HPPA yabelwe iilayibrari ukuba ibe neempawu ezichaziweyo.

- ingabonakali-inguqulelo

Ngokuqhelekileyo xa isimboli sinomxholo ongachazwanga, umnxibelelwano uya kuhoywa. Olu khetho lugqithisela iimpawu ngeenguqu ezingachazwanga kunye nephutha elibulalayo liya kukhutshwa endaweni yoko.

- ungaxwayisi-ukungabikho

Ngokuqhelekileyo ld iya kunika impazamo xa uzama ukudibanisa kunye neefayile zengeniso ezingahambelaniyo ngesizathu esithile, mhlawumbi ngenxa yokuba ziye zahlanganiswa kwiinkqubo ezahlukeneyo okanye ngabafundi abahlukeneyo. Olu khetho luchazela i-ld ukuba limele livumeleke ngokukhawulezileyo iimpazamo ezinokwenzeka. Le khetho kufuneka isetyenziswe kuphela ngononophelo, kwiimeko xa uthathe isenzo esithile esizodwa esiqinisekisa ukuba iziphene ze-linker azifanelekanga.

- ingabikho-archive

Vala umphumo wendlela yokugcina i-archive yeefayile ezilandelwayo.

- ungabikho

Gcina ifayile ephumelelayo xa isebenza. Ngokuqhelekileyo, i-linker ayiyi kuvelisa ifayile yokuphuma xa ihlangabezana neziphene ngexesha lekhonkco; iphuma ngaphandle kokubhala ifayile yefayile xa ikhupha nayiphina impazamo.

-nostdlib

Kukho kuphela iilayibrari zophando ezichazwe ngokucacileyo kumgca womyalelo. Iilayibrari ezichaziweyo kwiibrkthi zechungechunge (kubandakanywa izikripthi ze-linker ezichazwe kumgca womyalelo) zinyanzelwanga.

- ifomati -yefomati

ld inokuqwalaselwa ukuba isekele ngaphezu kweyodwa uhlobo lwefayile yezinto. Ukuba i- ld yakho iqulunqwe ngale ndlela, ungasebenzisa i- optional option ukuba ucacise ifomati yebhanari yefayile yezinto ezikhuphayo. Nangona i- ld iqulunqwe ukuxhasa ezinye iifom zezinto, awufaneki ukuba ucacise oku, njengoko kufuneka ukuba ilungele ukuvelisa ifomathi yokuvelisa ifom yefomathi nganye. ifomati-mveliso ngumtya wesicatshulwa, igama lefomathi ethile exhaswe ngamathala eencwadi e-BFD. ( Ungabhala uluhlu lwebhanari ekhoyo kunye ne- objdump -i .) Umyalelo weskripthi "OUTPUT_FORMAT" unokukwazi ukuchaza ifomathi yokuvelisa, kodwa olu khetho lugqithisa.

-qmagic

Olu khetho lugxothwa ngokuvumelana neLinux.

-Ye

Olu khetho lugqitywa kwiSVR4 ukuhambelana.

--Phola

Inketho kunye neziphumo ezixhomekeke kumatshini. Olu khetho lusekelwa kuphela kwiithagethi ezimbalwa.

Kwezinye iipulatifomu, i- option yokukhetha iyenzela ukulungiswa kwehlabathi okwenzekayo xa i-linker isombulula ukuphendula kwiprogram, njengendlela yokuphumla idilesi zee dilesi kunye nokwenziwa kwemigaqo emitsha kwifayile yezinto ezikhuphayo.

Kwezinye iiplani ezi zihlandlo zexesha lokuxhaswa kwehlabathi jikelele zingenza ukutshintshiselwa kwamagama okungafezekisikiyo okungekho nto engenakwenzeka. Oku kwaziwa ukuba yimeko ye-Matsushita MN10200 kunye ne-MN10300 yintsapho yabaprojekthi.

Kwiipulatifomi apho oku kuxhaswa khona, - i- relaxation yamkelwe, kodwa iyalunyaniswa.

ifayile-fayile-ifayile- fayile

Gcina kuphela iimpawu ezidweliswe kwifayile yegama , ukulahla bonke abanye. Igama lefayile lifayile efayili, enegama elinye lesimboli ngomgca. Olu khetho luncedo ngokukodwa kwiimeko (ezifana neVxWorks) apho ithebhulethi enkulu yelwimi yomhlaba iqokelelwa ngokuthe ngcembe, ukugcina imemori yexesha lokusebenza.

-ifayile-ifayile- ayiyi kulahla iimpawu ezingachazwanga, okanye iimpawu ezifunekayo zokufudukela.

Ungacacisa kuphela - ufumana iimpawu-ifayili kanye kumgca womyalelo. Iphezulu -s kunye -S .

-rpath tshala

Yongeza ulawulo kumzila wokukhangela ilayibrari yokusebenza. Oku kusetyenziswa xa kuqhagamshelanisa i-ELF ebonakalayo kunye nezinto ezabelwana ngazo. Zonke iingxoxo -rpath zichanekile kwaye zidluliselwe kwi-runtime linker, ezisebenzisayo ukufumana izinto ezabelwana ngazo ngexesha lokusebenza. I-- rpath inketho iphinda isetyenziswe xa ufumana izinto ezabelwana ngazo ezifunekayo ngezinto ezabelwana ngazo ngokucacileyo ezifakwe kwikhonkco; ubona inkcazo ye-- path-link option. Ukuba -rpath ayisetyenziswanga xa kudibanisa i-ELF ephumelelayo, iziqulatho zendawo eguqukileyo "LD_RUN_PATH" ziya kusetyenziswa ukuba kuchazwe.

I-- path option ingasetyenziswa kwakhona kwi-SunOS. Ngokungagqibekanga, kwi-SunOS, i-linker iya kwenza iqhosha lokukhangela ixesha lokusebenza kuzo zonke i -Lo zikhetho. Ukuba ukhetho lwe-- rpath lusetyenziswa, umzila wokusesha wexesha lokuqalisa uza kusetyenziswa kuphela i- options ongakhetha kuzo, ukungawunaki ukhetho lwe -L . Oku kunokuba luncedo xa usebenzisa i-gcc, enezela ezininzi -Izikhetho ezingabakho kwiinkqubo zeefayile ezifakwe kwiNFS.

Ukuhambelana nezinye izixhumanisi ze-ELF, ukuba i -R inketho ilandelwa ligama lolawulo, kunokuba igama lefayile, liphathwe njenge-- path option.

-rpath-link DIR

Xa usebenzisa i-ELF okanye i-SunOS, elinye ilayibrari eyabelwayo inokufuna enye. Oku kwenzekayo xa iqhosha elithi "ld-shared" liquka ilayibrari eyabelwe njengenye yeefayile zokufakwayo.

Xa umnxibelelwano ehlangene nokuxhomekeka okunjalo xa wenza unxibelelwano olungabonakaliyo, olungenakufuduswa, uzakuzama ngokuzenzekelayo ukufumana ilayibrari eyabelweyo kwaye uyifake kwisikhonkco, ukuba ayifakiwe ngokucacileyo. Kwimeko enjalo, ukhetho -rpath-link luchaza isethi yokuqala yeeleta ukukhangela. Inketho ye -- pp-link ingacacisa ukulandelelana kwamagama olawulo okanye ngokucacisa uluhlu lwamagama ahlukaniswe ngamakholoni, okanye ngokubonakala ngamaxesha amaninzi.

Olu khetho lufanele lusetyenziswe ngokuqapha njengoko lugqithisa umzila wokukhangela onokuba lukhuni luhlanganiswe kwilayibrari eyabelwe. Kwimeko enjalo kunokwenzeka ukuba ungasebenzisi ngokungazenzisiyo indlela yokucinga eyahlukileyo kunokuba umxhasi wexesha lokuqalisa uza kwenza ntoni.

I-linker isebenzisa le ndlela elandelayo yokukhangela ukuze ifumane iilayibrari ezabelwanayo ezifunekayo.

1.

Naziphi na iinkcukacha ezichazwe kwi- options-link ye-link .

2.

Naliphi na iikhowudi ezichazwe yi-options. Ukwahlula phakathi -rpath kunye ne -rpath-link kukuba iinqununu ezichazwe ngeendlela -rpath zifakiwe kwi-executable kwaye zisetyenziswe ngexesha lokusebenza, kanti i - option -rpath-link isebenza kuphela ngexesha lokuxhumela. Kungenxa yomxhasi wendawo kuphela.

3.

Kwi-ELF inkqubo, ukuba i-- rpath kunye ne "rpath-link" ayinasetyenziswanga , khangela iziqulatho zendalo "LD_RUN_PATH". Kungenxa yomxhasi wendawo kuphela.

4.

Kwi-SunOS, ukuba i-option ye -rpath yayingasetyenziswanga , tshengisa nayiphi na i-directories ecacisiweyo usebenzisa i -L zokukhetha.

5.

Kwi-linker yasekuhlaleni, iziqulatho zezimo zendalo "LD_LIBRARY_PATH".

6.

Kwi-ELF yasekuhlaleni, umnxibelelwano kwi "DT_RUNPATH" okanye "DT_RPATH" yeelayibrari eyabelweyo ifunwa kwiilayibrari ezabelwana ngazo ezifunekayo. Ukungena kwe "DT_RPATH" akunyanzelwanga ukuba kukho "ukungena kweDT_RUNPATH".

7.

Izikhokelo ezingapheliyo, ngokuqhelekileyo / lib kunye / usr / lib .

8.

Ukuqhagamshela umthonyama kwindlela ye-ELF, ukuba ifayile / /etc/ld.so.conf ikhona, uludwe lweenkcukacha ezifumaneka kwifayile.

Ukuba ilayibrari eyabelweyo ayifumanekanga, i-linker iya kukhupha ize iqhubeke kunye nekhonkco.

-wabiwe

-Iyaphumeleka

Yakha ilayibrari eyabelwe. Oku okwesekwa kuphela kwi-ELF, i-XCOFF kunye ne-SunOS. Kwi-SunOS, i-linker izakudala ngokuzenzekelayo ilayibrari eyabelwe ukuba i-option ayifumanekanga kwaye kukho impawu ezingabonakali kwisikhonkco.

- eziqhelekileyo-eziqhelekileyo

Olu khetho luchaza i- ld ukuhlalutya iimpawu eziqhelekileyo ngokusayizi xa zibeka kwiziqendu ezifanelekileyo. Okokuqala kuza zonke iimpawu ze-byte, ke zonke ii-byte zombini, ke zonke ii-byte ezine, kunye nayo yonke into. Oku kukuthintela izikhala phakathi kweempawu ezibangelwa ukulungiswa kwemida.

iifayile-fayile [ ubukhulu ]

Ifana ne- split-by-reloc kodwa yenza igalelo elitsha lefayile kwifayile nganye yokufakwayo xa kufika ubungakanani . ubungakanani bungafani na ubukhulu be-1 ukuba bungafumaneki.

ukuxhomekeka-ngokufuduka [ kubalwa ]

Uzama ukudala amacandelo angaphezulu kwifayili yokuphuma ukuze kungabikho nxalenye enye yefayile kwifayile equlethe ngaphezu kokubalwa kokubala . Oku kuncedo xa kuveliswa iifayile ezinkulu zokufudula zokukhuphela kwii-kernels zangempela zexesha kunye nefayile yefayile yefayile ye-COFF; ukususela ngo-COFF ingaba ngaphezu kwe-65535 ukufudlulela kwicandelo elinye. Qaphela ukuba oku kuya kwehluleka ukusebenza kunye nefomathi zefayile ezingenayo inkxaso izigaba ezingenanto. I-linker ayiyi kukwahlula amacandelo okufakelwa komntu ngamnye wokubuyisela kwakhona, ngoko ukuba icandelo elinye logalelo liqulethe ngaphezu kokubala kokufudukela kwelinye iqela lokuphuma liza kuba neendawo ezininzi zokufudukela. inani lokungafezeki kwixabiso le-32768.

--stats

Qhawula kwaye ubonise iinkcukacha malunga nokusebenza kwekhonkco, njengexesha lokusebenzisa kunye nokusetyenziswa kwememori.

- ifomati-format

Kweminye iithagethi, imveliso ye- ld ihluke ngeendlela ezithile ukusuka kwipropati yekhonkco ekhoyo. Lo tshintshi ucela ld ukusebenzisa ifomathi yendabuko esikhundleni.

Umzekelo, kwi-SunOS, i- ld idibanisa ukungena kweefayile kwitafile yecandelo lomqondiso. Oku kunokunciphisa ubungakanani befayili yokuphuma kunye nolwazi olugqithiseleyo lokuphuhlisa ulwazi ngeepesenti ezingama-30. Ngelishwa, inkqubo ye-SunOS "dbx" ayikwazi ukufunda iprogram eyiphumela ("gdb" ayinayo ingxaki). Utshintshi lwefomati-fomati luxelela i- ld ukuba ingahlanganisi ukungena kwamaphepha .

iqhosha lokuqalisa iqela = org

Fumana icandelo kwifayili yokuphuma kwidilesi epheleleyo enikezwe ngu- org . Ungasebenzisa olu khetho ngamaxesha amaninzi njengoko kuyimfuneko ukufumana amacandelo amaninzi kumgca womyalelo. I-org kufuneka ibe yinani elilodwa le-hexadecimal integer; ukuhambelana nezinye izixhumanisi, ungashiya i- 0x ekhokelayo ngokuqhelekileyo inxulumene neempawu ze-hexadecimal. Qaphela: akufanele kubekho isikhala esimhlophe phakathi kwegama legama , uphawu lokulingana (`` = ''), kunye no.

-Tbss okanye

-Tata okanye

-Iteksi yomxholo

Sebenzisa i- org njengedilesi yokuqala ye---- ngokulandelanayo- "ibss", "idatha", okanye "icandelo" lefayile yefayile. I-org kufuneka ibe yinani elilodwa le-hexadecimal integer; ukuhambelana nezinye izixhumanisi, ungashiya i- 0x ekhokelayo ngokuqhelekileyo inxulumene neempawu ze-hexadecimal.

--llll-verbose

--verbose

Bonisa inombolo yenguqu ye- ld kwaye uluhlu lweempawu ezixhaswayo. Bonisa ukuba yeyiphi iifayile ezingenayo kwaye ayikwazi ukuvulwa. Bonisa iskripthi se-linker esisetyenziswe ngumxhumanisi.

--verver-script = i- version-scriptfile

Cacisa igama lombhalo wenguqulo kwi-linker. Oku kusetyenziswa ngokukhawuleza ekudaleni iilayibrari ezabelwana ngazo ukucacisa ulwazi olongezelelweyo malunga neenguqulelo zezifundo zethala leencwadi ezidalwe. Olu khetho lusetsingiselo kuphela kwiipulatifomu ze-ELF ezixhasa iilayibrari ezabelwana ngazo.

- oluqhelekileyo

Qaphela xa uphawu olufanayo ludibaniswa nolunye uphawu oluqhelekileyo okanye nencazelo yesimboli. Unxibelelwano lwe-Unix luvumelekile ukwenza lo mkhwa, kodwa udibanisa kwezinye iinkqubo zokusebenza. Olu khetho lukuvumela ukuba ufumane iingxaki ezinokuthi zidibanise iimpawu zehlabathi. Ngelishwa, ezinye iilayibrari zeC zisebenzisa lo mkhuba, ngoko unokufumana izilumkiso malunga neempawu zamathala eencwadi nakwiinkqubo zakho.

Kukho iintlobo ezintathu zeempawu zehlabathi, eziboniswe apha ngemizekelo C:

int i = 1;

Inkcazo, ehamba kwicandelo lwedatha eqalisiweyo yefayili yokuphuma.

ngaphandle ngaphandle int;

Inkcazo engachazwanga, engabelanga isithuba. Kufuneka kubekho nentsingiselo okanye uphawu oluqhelekileyo loguquko kwindawo ethile.

int i;

Uphawu olufanayo. Ukuba kukho kuphela (enye okanye ngaphezulu) iimpawu eziqhelekileyo zokuguquguquka, iya kwiindawo ezingasetyenzisiweyo zedatha yefayile. I-linker idibanisa iimpawu ezininzi eziqhelekileyo zokutshintsha okufanayo kwisimboli esisodwa. Ukuba ngaba bobukhulu obuhlukeneyo, ikhetha ubukhulu obukhulu. I-linker ijika isimboli esifanayo kwisibhengezo, ukuba kukho inkcazo yemeko efanayo.

Ikhetho-eliqhelekileyo elikhethiweyo linokuvelisa iintlobo ezintlanu zezilumkiso. Isilumkiso ngasinye sinombini weendlela: owokuqala uchaza isimboli esasihlangabezane nayo, kwaye okwesibini ichaza isimboli sangaphambili esifumene negama elifanayo. Enye okanye zombini iisimboli zombini iya kuba ngumqondiso oqhelekileyo.

1.

Ukuguqula isimboli esifanayo kwisithenjwa, kuba sele kusekho ingcaciso yesimboli.

(): isilumkiso: esivakalayo < 'ephawulwe ngcaciso (): isilumkiso: ichazwe apha

2.

Ukuguqula isimboli esifanayo kwisithenjwa, kuba inkcazo kamva yesimboli idibana nayo. Oku kufana nelo lidlulileyo, ngaphandle kokuba iimpawu zidibana noluhlu oluhlukile.

(): isilumkiso: '' ngaphezulu (): isilumkiso:

3.

Ukudibanisa isimboli esifanayo kunye nomfanekiso oqhelekileyo oqhelekileyo.

(): isilumkiso: eziqhelekileyo ze ` '> <): isilumkiso: esidlulileyo

4.

Ukudibanisa isimboli esifanayo kunye nesimboli esasisigxina esiphezulu.

(): isilumkiso: esivakalayo < 'esongezwe ngokubanzi (): isixwayiso

5.

Ukudibanisa isimboli esifanayo kunye nesigqithiso esincinci esidlulileyo. Oku kufana nelo lidlulileyo, ngaphandle kokuba iimpawu zidibana noluhlu oluhlukile.

(): isilumkiso: eqhelekileyo < 'ngaphezu kweyona nto incinci (): isilumkiso: esincinci esivamile silapha

- abatyeki-abakhi

Mcebisa ukuba kukho naziphi izakhiwo zomhlaba ezisetyenzisiweyo. Oku kuncedo kuphela kwiifom zeefayile zezinto ezimbalwa. Iifom ezifana ne-COFF okanye i-ELF, isixhumanisi asikwazi ukubona ukusetyenziswa kwabakhi bomhlaba jikelele.

- khangela-multiple-gp

Qaphela ukuba ngaba iimpawu ze-pointer zehlabathi jikelele zifuneka kwifayili yokuphuma . Oku kuthetha kuphela kubaprojekthi abathile, njenge-Alpha. Ngokukodwa, abanye abaprojekthi bafaka imilinganiselo exabisekileyo enkulu kwicandelo elikhethekileyo. Irejista ekhethekileyo (i-pointer yomhlaba wonke) ichaza phakathi kweli candelo, ukwenzela ukuba izithintelo zikwazi ukulayishwa ngokufanelekileyo ngemodi yokudibanisa isistim esisezantsi. Ekubeni i-offset kwi-rejista ye-base-register isisigxina kwaye imancinci (umz., Ii-16 bits), lo mda ukhulula ubukhulu becala lokubasa. Ngaloo ndlela, kwiiprogram ezinkulu, kubalulekile ukuba kusetyenziswe iimpawu ezininzi ze-pointer zexabiso jikelele ukwenzela ukuba ukwazi ukujongana nazo zonke iingxaki ezikhoyo. Eli khetho lenza ukuba isilumkiso sikhutshwe xa kunokwenzeka.

- khangela-kanye

Yilumkiso kuphela emva kwesinye isimboli esingabonakaliyo, kunokuba yinye ngeyomodyuli ebhekise kuyo.

- uqwalasela-icandelo-ulungelelaniso

Qaphela ukuba idilesi yecandelo lokuvelisa liyashintshwa ngenxa yokulungelelaniswa. Ngokuqhelekileyo, ulungelelwaniso luya kusetyenziswa kwicandelo lokungena. Idilesi iya kutshintshwa kuphela ukuba ayicacisiwe ngokucacileyo; oko kukuthi, ukuba umyalelo othi "IZIGABA" awucacisi idilesi yokuqala yecandelo.

i-archive-archive

Kuloluhlu olulandelayo olukhankanywe kumgca womyalelo emva kokukhethwa kwe-archive ye-archive , faka yonke ifayile yezinto kwindawo yokugcinwa kwekhonkco kwikhonkco, kunokuba uphendule kwi-archive yeefayile zezinto ezifunekayo. Oku kuqhelekileyo kusetyenziswe ukuguqula ifayile yokugcinwa kwirejista kwilayibrari eyabelwe, ukuphoqa yonke into ukuba ifakwe kwilabhulali eyabelwe. Olu khetho lunokusetyenziswa ngaphezu kweyodwa.

Amanqaku amabini xa usebenzisa le khetho kwi-gcc: Okokuqala, i-gcc ayiyazi malunga nale khetho, ngoko kufuneka usebenzise -Wl, -olondolozo lwe-archive . Okwesibini, ungalibali ukusebenzisa -Wl, -nye-jikelele-archive emva kohlu lwakho lweengxelo , kuba i-gcc izongeza uluhlu lwazo lweengxelo kwikhonkco yakho kwaye ungafuni ukuba le flegi ifuthe nalawo.

isimboli

Sebenzisa umsebenzi we-wrapper yesimboli . Naluphi na umboniso ongachazwanga kwisimboli uya kugqitywa kwi "__ wrap_symbol". Naluphi na umboniso ongachazwanga kwi "__real_symbol" uza kusombululwa kwisimboli .

Oku kungasetyenziselwa ukubonelela umgca wenkqubo yomsebenzi. Umsebenzi wokuqhawula kufuneka ubizwa ngokuthi "__wrap_symbol". Ukuba unqwenela ukubiza umsebenzi wenkqubo, kufuneka ubize "__ real_symbol".

Nasi umzekelo ongathandekiyo:

ukungabi nalutho * __wrap_malloc (int c) {printf ("malloc ebizwa nge% ld \ n", c); ukubuya __real_malloc (c); }

Ukuba udibanisa enye ikhowudi kunye nale fayela usebenzisa i- malrap malloc , ke zonke iifowuni kwi "malloc" iya kubiza umsebenzi "__wrap_malloc" endaweni yoko. Ifowuni ku- "__real_malloc" kwi "__wrap_malloc" iya kubiza umsebenzi "wangempela".

Unokuba unqwenela ukubonelela nge "__real_malloc" umsebenzi, ukuze unxibelelwano ngaphandle kwe- option option will succeed . Ukuba wenza oku, akufanele ubeke inkcazo ye "__ real_malloc" kwifayile efanayo "__wrap_malloc"; Ukuba wenza, i-assembler inokusombulula umnxeba phambi kokuba i-linker inethuba lokuyifaka kwi "malloc".

ezitsha-ezitsha-dtag

ezinokutsha-ezintsha-dtag

Lo mnxibelelisi unokudala i-tags entsha ye-ELF. Kodwa iiprogram ze-ELF ezindala azinakuziqonda. Ukuba ucacisa - olutsha-olutsha-i-dtag , iithegi ezinamandla ziya kudalwa njengoko zifunekayo. Ukuba ucacisa - i-new-dtags , i-tags enamandla izakudala. Ngokungagqibekanga, itekisi entsha enamandla ayilwanga. Qaphela ukuba ezo zikhetho zifumaneka kuphela kwiinkqubo zeELEL.

I386 PE linker isekela ukhetho olukhethiweyo, olubangela ukuba isiqhamo sibe yilayibrari enxulumene ne-DLL endaweni eqhelekileyo. Ufanele ukhethe igama "* .dll" xa usebenzisa le ndlela. Ukongeza, i-linker isekela ngokupheleleyo iifayile "* .def" eziqhelekileyo, ezinokuthi zichazwe kumgca wolawulo lwe-linker njengefayile yezinto (eqinisweni, kufuneka ilandele iifolda ezithumela ngaphandle iimpawu ezivela kuyo, ukuqinisekisa ukuba zidibeneyo, nje ngefayile yezinto eziqhelekileyo).

Ukongeza kwizinto eziqhelekileyo kuzo zonke iithagethi, i-I386 PE inkxaso yokuxhaswa kwenkxaso yomgca owongeziweyo kwizinto ze-I386 PE. Izinketho ezithatha ixabiso liyakwazi ukwahlukana kwiimilinganiselo zazo ngendawo okanye uphawu olulinganayo.

-add-stdcall-alias

Ukuba kunikwe, iimpawu kunye nesondlo se-stdcall (@ nn ) ziya kuthunyelwa njenge-kunye kunye nesithintelo esithathwe.

- fayile- fayile

Sebenzisa ifayile njengegama lefayili apho ungasindisa khona idilesi zesiseko zonke zokufudukela ezifunekayo ekudaleni i- DLL nge- dlltool .

-

Yakha i-DLL endaweni yokusebenza rhoqo. Ungasebenzisa kwakhona- ufumane okanye uchaze "i-LIBRARY" kwifayile ".def".

efanelekileyo-stdcall-fixup

ukulungiswa-stdcall-fixup

Ukuba unxibelelwano lufumana uphawu olungenakuyilungisa, luya kuzama ukwenza `` ukuxuba ukuxhamla '' ngokukhangela enye isimboli esichazwe kuphela efomathi yegama lesimboli (cdecl vs stdcall) kwaye iza kusombulula eso simboli ngokudibanisa kumdlalo. Ngokomzekelo, uphawu olungachazwanga "_foo" lunokudibaniswa nomsebenzi "_foo @ 12", okanye uphawu olungachazwanga "_bar @ 16" lunokudibaniswa nomsebenzi "_bar". Xa i-linker yenza oku, iprinta isilumkiso, kuba ngokuqhelekileyo kufuneka ihlulekile ukudibanisa, kodwa ngamanye amaxesha ukuthumela iilayibrari ezivela kwi-third-party dlls zingadinga ukuba le nto ifumaneke. Ukuba ucacisa-ukulungiswa-stdcall-fixup , le nto inikwe amandla ngokupheleleyo kwaye izilumkiso aziprintwanga. Ukuba ucacisa -i-stdcall-fixup , i-featured ikhutshaziwe kwaye loo mpazamo ithathwa njengephutha.

- i-export-all-symbols

Ukuba kunikwe, zonke iimpawu zehlabathi kwizinto ezisetyenziselwa ukwakha i-DLL ziya kukhutshwa yi-DLL. Qaphela ukuba oku kungagqibekanga ukuba ngaba kwakungekho naziphi na iimpawu ezisetyenzisiweyo. Xa iimpawu zithunyelwa ngokucacileyo ngeefayile ze-DEF okanye zithunyelwa ngokupheleleyo ngaphandle kweempawu zobume, ukusilela kukungathumeli enye into ngaphandle kokuba le khetho inikwe. Qaphela ukuba iimpawu "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", kunye "impure_ptr" aziyi kuthunyelwa ngokuzenzekelayo. Kwakhona, iimpawu ezithunyelwa ngaphandle kwamanye ama-DLL aziyi kuphinda zithunyelwe ngaphandle, kwaye iziganeko ezingabonakaliyo zingabonakalisa uhlobo lwangaphakathi lwe-DLL olufana nelo luqala ngo "_head_" okanye luphela nge "_iname". Ukongeza, akukho zibonakaliso ezivela "libgcc", "libstd ++", "libmingw32", okanye "crtX.o" ziya kuthunyelwa ngaphandle. Iimpawu eziqala amagama "__rtti_" okanye "__builtin_" aziyi kuthunyelwa ngaphandle, ukunceda nge-C ++ DLL. Ekugqibeleni, kukho uluhlu olubanzi lweempawu ze-cygwin-zangasese ezingabathunyelwa ngaphandle (ngokucacileyo, oku kusebenzayo xa i-DLL yokwakha iinjongo ze-cygwin).

Le mijelo-engabandakanyiyo: "_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" ", kunye" neemeko ".

uphawu lwesibonakaliso -i-iclude , uphawu , ...

Icacisa uluhlu lweempawu ezingafanelekanga ngokuzenzekelayo. Amagama angamatshwayo anganqunyulwa ngama-commas okanye koloni.

-exclude-libs lib , lib , ...

Icacisa uluhlu lweelayibrari ezigcinwe kwii-archive ezivela kuzo iimpawu ezingafanelekanga ngokuzenzekelayo. Amagama amathala eencwadi anokwenziwa ngama-commas okanye iikholoni. Ukucacisa "-exclude-libs ZONKE" zingabandakanyi iimpawu kuzo zonke iilayibrari zokugcina izinto ezivela ngaphandle. Iimpawu ezibhalwe ngokucacileyo kwifayili .def zithunyelwa ngaphandle, kungakhathaliseki ukuba kukhetho.

ulungelelaniso lwefayile

Cacisa ukulungiswa kwefayile. Iziqendu kwifayile ziya kuhlala ziqala kwiifayile ezithintekayo eziphindaphindiweyo kule nombolo. Oku kungagqibekanga ku-512.

- ukugcina

- ukugcina , uzinikele

Cacisa inani lememori eliza kugcinwa (kunye nokuzikhethela) ukuba lisetyenziswe njengenqwaba yale program. I-default is 1Mb igcinwe, 4K yenza.

xabiso-siseko

Sebenzisa ixabiso njengedilesi yesiseko kwinkqubo yakho okanye i-dll. Le ndawo yendawo yokugcina imemori eya kusetyenziswa xa inkqubo yakho okanye i-dll ilayishiwe. Ukunciphisa isidingo sokufudukela kunye nokuphucula ukusebenza kwee-dlls, ngamnye kufuneka abe nedilesi ekhethekileyo kwaye angabikho enye i-dll. Okungagqibekanga kuku-0x400000 kwi-executables, kunye ne-0x10000000 ye-dlls.

-kill-at

Ukuba kunikeziwe, izithinteli ze stdcall (@ nn ) ziya kuhlulwa kwiimpawu ngaphambi kokuba zithunyelwe.

- value-version-version value

Ubeka inamba enkulu '`image version' '. Ukungaguquki kwi-1.

xabiso -major-os-version

Useka inamba enkulu ye `` os version ''. Ukungaguquki kwi-4.

- value-subsystem-version value

Useka inamba enkulu ye `` subsystem version ''. Ukungaguquki kwi-4.

ixabiso lokugqibela lomfanekiso

Ubeka inamba encinci ye `` version 'yesithombe' '. Ukungaguquki kwi-0.

ixabiso elingu-min-os-version

Useka inamba encinci ye `` os version ''. Ukungaguquki kwi-0.

ixabiso elingu-subsystem-version

Useka inombolo encinci ye `` subsystem version ''. Ukungaguquki kwi-0.

ifayile-defput-def

I-linker izakudala ifayile yefayili eya kuba nefayili ye DEF ehambelana ne-DLL i-linker eyenza. Le fayili ye-DEF (ebizwa ngokuthi "* .def") ingasetyenziselwa ukudala ilayibrari yokungenisa nge "dlltool" okanye ingasetyenziselwa ukubhekisela kwiimpawu ezizenzekelayo okanye ngokuthe ngqo.

ifayile ye-implib

I-linker izakudala ifayile yefayili eya kuba ne-import ib ehambelana ne-DLL i-linker eyenza. Oku kungeniswa lib (okufuneka kuthiwa "* .dll.a" okanye "* .a" ingasetyenziselwa ukudibanisa abathengi kwiDLL eyenziwe; le ndlela yenza ukuba kwenzeke ukunqumla isahluko sokudalwa kwamathala e-"dlltool".

esisiseko---image-base-base

Khetha ngokuzenzekelayo isiseko somfanekiso we-DLL, ngaphandle kokuba omnye ucacisiwe usebenzisa i-"-image-base" argument. Ngokusebenzisa i-hash ekhiqizwa kwigama lomnxeba ukudala iziseko zemifanekiso eyahlukeneyo yeDLL nganye, ukukhunjulwa kweememori kunye nokufudlulela oku kunokubambezela ukuphunyezwa kwenkqubo.

isiseko-esingabonakaliyo-isiseko-image-base

Ungenzi ngokuzenzekelayo isiseko somfanekiso oyingqayizivele. Ukuba akukho sikhokelo somfanekiso esichazwe ngumsebenzisi ("-image-base") ke usebenzisa i-platform engagqibekanga.

nqakraza-phambili-yosesho lokuqala

Xa udibanisa ngokuzenzekelayo kwi-dll ngaphandle kwelayibrari yokungenisa, khangela " .dll" ngokukhetha "lib .dll". Le ndlela ivumela ukuhlukana okulula phakathi kwe-DLL eyakhelwe ezahlukeneyo `` subplatforms '': isizwe, i-cygwin, uwin, i-pw, njl njl. Ngokomzekelo, i-cygwin DLL isebenzisa "-dll-search-prefix = cyg".

ezingenakukwazi ukuzisebenzisa

Ngaba udibaniso olunzulu lwe "_symbol" ukuya ku- "__imp__symbol" ye-DATA engeniswa kwii-DLL, kwaye yenza izibonakaliso ezifunekayo zokuthungatha xa usakha iilayibrari zokungenisa kunye nala maDATA. Oku ngokuqhelekileyo 'kuya kusebenza' --- kodwa ngamanye amaxesha ungabona lo myalezo:

"variable" 'ayikwazi ukuthengiswa ngokuzenzekelayo. Nceda ufunde amaxwebhu e-ld "-ngenako-ukungenisa ngokuzenzekelayo" malunga neenkcukacha. "

Lo myalezo uvela xa enye inqaku (sub) lifikelela kwidilesi ekugqibeleni linikezelwa ngokubakho kwemilinganiselo emibini (Win32 ithengisa amathebula kuphela avumela omnye). Amaxesha apho oku kwenzeka khona kubandakanya ukufikelela kwiindawo ezisemthethweni zokwenza izinto eziguqukayo ezivela kwi-DLL, kunye nokusebenzisa isalathisi rhoqo kwi-variable elandelwayo evela kwi-DLL. Naluphi na uhlobo olutshintsho lwegama elibanzi (i-arrays, isakhiwo, ixesha elide, njl.) Linokubangela le mpazamo imeko. Nangona kunjalo, kungakhathaliseki ukuba luhlobo luni lweenkcukacha zoluhlu olukhutshwe ngaphandle, ld luya kuhlala luyijonga, lukhuphe isilumkiso, uphume.

Kukho iindlela ezininzi zokujongana nale ngxaki, kungakhathaliseki ukuba luhlobo luni lweeditshulwa ezithunyelwa ngaphandle:

Enye indlela kukusebenzisa ukusetyenziswa kwe-runtime-pseudo-reloc switch. Oku kushiya umsebenzi wokutshintshwa kwezikhombisi kwiikhowudi yomxhasi wakho wokusingqongileyo, ngoko ke le ndlela isebenza kuphela xa i-runtime ye-runtime isekela le nxalenye.

Isisombululo sesibini kukunyanzelisa enye 'yezimiso' ukuba ziguquke - okungazi, ezingaziwa kwaye ezingenakulungelelaniswa ukuqokelela ixesha. Ukufumana izixhobo, kukho iindlela ezimbini: a) yenza i-index (idilesi ye-array) iguqule, okanye b) yenza i-index 'rhoqo' iguquke. Ngaloo ndlela:

uhlobo lwangaphandle ngaphandle exar_array []; yangaphandle_array [1] -> {uhlobo olunqwenelekayo * t = extern_array; t [1]}

okanye

uhlobo lwangaphandle ngaphandle exar_array []; ngaphandle_array [1] -> {intliziyo engathandekiyo t = 1; ngaphandle_array [t]}

Ukulungiswa (kunye nezinye iindidi zeenkcukacha zeenkcukacha ezininzi) ukhetho olulodwa kukukwenza uqobo ngokwakhe (okanye ixesha elide, okanye ...):

yangaphandle sakhiwo s outer_struct; extern_struct.field -> {i-struct s * t = & extern_struct; t-> intsimi}

okanye

ngaphandle kwangexesha elide ngaphandle_ll; extern_ll -> {ezinokuzenzekelayo ixesha elide * loc_ll = & extern_ll; * local_ll}

Indlela yesithathu yokujongana nale nkathazo kukushiya 'ukungenisa ngokuzenzekelayo' kwisimboli esonayo kwaye uyiphawule nge "__declspec (dllimport)". Nangona kunjalo, ngokwenza oko kufuneka ukuba usebenzise i-time-finance time to show whether you are building a DLL, ikhowudi yomakhi yokwakha eya kudibanisa ne-DLL, okanye nje ukwakha / ukudibanisa kwilayibrari ye static. Xa ukhetha ukhetho phakathi kweendlela ezahlukeneyo zokusombulula idilesi ngqo kunye neengxaki eziqhubekayo, kufuneka uqwalasele ukusetyenziswa kwehlabathi langempela:

Okokuqala:

--foo.h ngaphandle kwangaphakathi []; --foo.c # kunye ne "foo.h" yangasese engundoqo (int argc, char ** argv) {printf ("% d \ n", cwangcisa [1]); }

Isixazululo 1:

--foo.h ngaphandle kwangaphakathi []; --foo.c # kuquka "i-foo.h" eyona nto engenamsebenzi (int argc, char ** argv) {/ * Lo msebenzi wenzelwe i-win32 kunye ne-cygwin; musa "ukulungiselela" * / intliziyo engathandekiyo * parr = isicwangciso; printf ("% d \ n", parr [1]); }

Isixazululo 2:

- Qaphela: ukuthunyelwa kwemoto ngokuzenzakalelayo kuthathwa (akukho __declspec (dllexport)) * / #if (ichazwe (_WIN32) || ichazwe (__ CYGWIN__)) && \! (ichazwe (FOO_BUILD_DLL) || ichazwe (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif ngaphandle FOO_IMPORT int arr []; --foo.c # kunye ne "foo.h" yangasese engundoqo (int argc, char ** argv) {printf ("% d \ n", cwangcisa [1]); }

Indlela yesine yokuphepha le ngxaki kukuphinda ikhowudi yakho ye-library ukuba isebenzise isikhombiselwano esisebenzayo kunokuba i-interface yolwazi kwimimiselo ekhohlakeleyo ( umzekelo set_foo () kunye ne- get_foo () imisebenzi yokufikelela).

ukungabonakali-ukungenisa ngokuzenzekelayo

Ungazami ukwenza ukudibanisa okunokonakalayo kwe "_symbol" ukuya ku- "__imp__symbol" kwi-DATAimports evela kwi-DLL.

efanelekileyo-yokuqalisa-pseudo-reloc

Ukuba ikhowudi yakho iqulethe izichazi ezichazwe kwicandelo elingenakwenzeka-lokungenisa ngokuzenzekelayo, oko kukuthi, i-DATAimports evela kwi-DLL engenakucatshulwa, lo tshintshi uza kudala i vector ye-'timetime yokufuduswa kwamagama 'angasetyenziselwa yindawo yokusebenza yexesha lokuqhuba ukulungiswa kweenkcukacha kuluhlu olunjalo kwikhowudi yakho yomthengi.

i-runtime-runtime-pseudo-reloc

Ungenzi ukuhanjiswa kwegama lokungena kwi-DATA ye-DLL. Oku kungagqibekanga.

efanelekileyo-eyongezelelweyo ye-debug

Bonisa ulwazi olongezelelweyo lokuthungulwa kwezinto ezinxulumene nokungenisa ngokuzenzekelayo ukuthungatha i-symbol thunking.

- ulungelelwaniso

Useka icandelo lolungelelaniso. Amacandelo enkumbulo aya kuqala kwiidilesi eziqela le nombolo. Ukungaguquki kwi-0x1000.

- yokugcina indawo

- gcina indawo yokugcina , yenza

Cacisa inani lememori ukuba ligcinwe (kwaye ngokuzikhethela lenze) ukuba lisetyenziswe njengekhowudi yale program. I-default yi-2Mb igcinwe, 4K yenza.

- subsystem

--subsystem apho : enkulu

--subsystem apho : enkulu . encinci

Icacisa issystem apho inkqubo yakho iya kuqhuba khona. Iimpawu ezisemthethweni ezithi "zizalwe", "iifestile", "console", kunye ne "posix". Ungakhetha ngokukhethekileyo iseshoni yeshini kwakhona.

Kubalulekile: Sebenzisa umyalelo womntu ( % umntu ) ukubona indlela umyalelo usetyenziswa ngayo kwiikhomputha yakho ethile.