I-Linux / Unix Command: Id

NAME

ld - Usebenzisa i-LD , isixhumanisi se- GNU

SYNOPSIS

I-ld [ izinketho ] izikhalazo ...

DESCRIPTION

I-ld ihlanganisa inombolo yezinto kanye namafayela okugcina, igudluza idatha yayo futhi ihlanganisa izikhombisi zezimpawu. Ngokuvamile isinyathelo sokugcina ekuqaliseni uhlelo ukuqhuba ld .

I-ld yamukela amafayela e-Linker Command Ulimi olwakhelwe ku-superset ye-AT & T's Link Editor Command Language Language syntax, ukuhlinzeka ngokulawula okucacile nokuphelele phezu kwenqubo yokuxhumanisa.

Leli khasi lamadoda alichazi ulimi lomyalo; bheka ukungena kwe- ld ku- "info", noma i-ld manual: i- GNU linker, ukuze uthole imininingwane ephelele ngolimi lomyalo nakwezinye izici ze-GNU linker.

Le nguqulo ye- ld isebenzisa inhloso ejwayelekile yezincwadi ze-BFD zokusebenza kumafayili wezinto. Lokhu kuvumela ukuthi i- ld ifunde, ihlanganise, futhi ibhale amafayela wezinto ezinhlobonhlobo eziningi ezahlukene, isibonelo, i- COFF noma i- "a.out". Amafomethi ahlukene angaxhunyaniswa ndawonye ukukhiqiza noma iyiphi ifayela lezinto ezikhona.

Ngaphandle kokuguquguquka kwawo, i-linker ye-GNU iyasiza kakhulu kunezinye izixhumanisi ekuhlinzekeni ngolwazi lokuxilonga. Abaxhumanisi abaningi bayeke ukubulawa ngokushesha lapho behlangana nephutha; noma kunokwenzeka, i- ld iyaqhubeka isebenza, ikuvumela ukuba ubone ezinye iziphambeko (noma, kwezinye izimo, ukuthola ifayela elikhiphayo naphezu kwephutha).

Umxhumanisi we- GNU ld uhloselwe ukumboza ububanzi obubanzi bezimo, futhi kube okuhambisanayo nakwezinye izixhumanisi. Ngenxa yalokho, unezinqumo eziningi zokulawula ukuziphatha kwayo.

AMAKHONO

Isixhumanisi sisekela izinketho eziningi zezinketho zamakhompiyutha , kodwa empeleni ukwenza okumbalwa kuzo kusetshenziswe kunoma yisiphi isimo esithile. Isibonelo, ukusebenzisa njalo i- ld ukuxhuma amafayili e-Unix ejwayelekile kwi- Unix system esebenzayo. Kuhlelo olunjalo, ukuxhumanisa ifayela elithi "hello.o":

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

Lokhu kutshela i- ld ukukhiqiza ifayela elibizwa ngokuthi ukukhishwa njengomphumela wokuxhumanisa ifayela "/lib/crt0.o" ne "hello.o" kanye nelabhulali "libc.a", okuzovela emibhalweni ejwayelekile yokusesha. (Bheka ingxoxo ye-- l inketho ngezansi.)

Ezinye zezinketho zomugqa wokulawula ku- ld zingachazwa nganoma yisiphi iphuzu kumugqa womyalo. Noma kunjalo, izinketho ezibhekisela emafayeleni, njenge -l noma -T , yenza ukuba ifayela lifundwe lapho iphuzu lizovela khona emgqeni wokulayisha, ngokuphathelene namafayela okuthile nezinye izinketho zefayela. Ukuphinda okukhethwa kukho okungenayo ifayela ngempikiswano ehlukile ngeke kube nomthelela owengeziwe, noma ngaphezulu kwezikhathi ezenzeka ngaphambili (lezo ezingaphezulu ngakwesobunxele emgqeni womyalo) wale nketho. Izinketho ezingahle zichazwe ngokuphindwe kaningi ngaphezu kweyodwa eziphawulwe ezinchazweni ngezansi.

Izimpikiswano ezingezona izinketho kukhona amafayili noma izinto zomlando ezizoxhunyaniswa ndawonye. Bangase balandele, basebenzise, ​​noma baxubeke ngezinketho zomugqa womyalo, ngaphandle kokuthi ingxabano yefayili yezinto ayikwazi ukufakwa phakathi kokukhethwa kukho nokuphikisana kwayo.

Ngokuvamile i-linker isetshenziswe okungenani ifayela elilodwa lezinto, kodwa ungacacisa ezinye izinhlobo zamafayela wokufaka kanambambili usebenzisa i- l , -R , nelimi lomyalo weskripthi. Uma kungenjalo amafayela wokufakwayo okubhaliwe ayacacisiwe, i-linker ayikhiqizi noma yikuphi okukhiphayo, futhi ibeka umlayezo amafayela angenayo .

Uma isixhumanisi singakwazi ukubona ifomethi yefayili yezinto, izocabangela ukuthi iyisikripthi sokuxhumanisa. Iskripthi esibekiwe ngale ndlela sihlanganisa iskripthi esiyinhloko sokuxhumanisa esetshenziselwa isixhumanisi (noma iskripthi esixhunyanisiwe esixhunyanisiwe noma esichazwe ngokusebenzisa -T ). Lesi sici sivumela isixhumanisi ukuba sixhumanise nefayela elibonakala liyinto noma ingobo yomlando, kepha empeleni imane nje ichaza amanye amanani angokomfanekiso, noma isebenzisa i- "INPUT" noma "GROUP" ukulayisha ezinye izinto. Qaphela ukuthi ukucacisa iskripthi ngale ndlela kuvele nje ukufaka isikripthi esiyinhloko sokuxhumanisa; sebenzisa i- T yokukhetha ukufaka ngokugcwele iskripthi sokuxhumanisa esizenzakalelayo.

Ukuze uthole izinketho amagama abo ayingqayizivele, izinketho zokukhetha kufanele zilandele incwadi yokukhetha ngaphandle kokungena ngemvume, noma zinikezwe njengezingxabano ezihlukile ngokushesha okulandela ukhetho oludinga kubo.

Ukuze uthole izinketho amagama abo angamagama amaningi, noma i-dash eyodwa noma amabili ingaphambi kwegama lokukhetha; isibonelo, i- trace-symbol kanye ne -trace-symbol iyalingana. Qaphela - kukhona okunye okuhlukile kulo mthetho. Izinketho eziningi zezinhlamvu eziqala ngecala eliphansi 'o' lingagcinwa kuphela ngamadoksi amabili. Lokhu kunciphisa ukudideka nge--o inketho. Ngakho-isibonelo -omagic usetha igama lefayela lokukhipha emlenzeni kanti -omagic isetha ifulegi le-NMAGIC ekuphumeni.

Iziphakamiso ezinketheni zamakholi amaningi kufanele zihlukaniswe negama lokukhetha ngokusayina okulinganayo, noma zinikezwe njengezingxabano ezihlukile ngokushesha okulandela inketho efuna yona. Isibonelo, i -foo-symbol foo ne -trace-symbol = foo ilingana. Izifinyezo ezihlukile zamagama ezinketho zamagama amaningi zamukelwa.

Qaphela - uma ngabe isixhumanisi sibhekwa ngokungaqondile, nge-driver ye-compiler (isb. Gcc ) ngakho konke okukhethwa kukho komlayini wokuxhumanisa kufanele kufakwe kuqala -Wl, (noma noma yini efanelekayo kumshayeli othile wokuhlanganisa) kanje:

gcc -Wl, - isiqalo se-foo.o bar.o -Wl, - i-group group

Lokhu kubalulekile, ngoba uma kungenjalo uhlelo lokushayela umqoqo lungathutha izinketho zokuxhumanisa buthule, okuholela ekuxhumaneni okubi.

Nayi ithebula lomsindo womugqa womyalo otholwa ngumxhumanisi we-GNU:

-igama elingukhiye

Lolu khetho lusekelwa ukuhambisana kwe-HP / UX. I-argument yegama elingukhiye kufanele ibe enye yezintambo zokugcina , ezabelwana , noma ezizenzakalelayo . -aarchive isebenza ngokulingana no -Bstatic , kanti amanye amagama angukhiye amabili asebenza ngokulingana no -Bdynamic . Le ndlela ingasetshenziswa noma iyiphi inombolo yezikhathi.

- Isakhiwo

--architecture = izakhiwo

Ekukhululweni okwamanje kwe- ld , le nketho isebenza kuphela emndenini we-Intel 960 wezakhiwo zokwakha. Kulolu hlelo lokuhlela ld , ukuphikisana kwezakhiwo kubonisa isakhiwo esithile emndenini we-960, ukunika amandla ezinye izivikelo nokuguqula indlela yokucinga yamabhala-archive.

Ukukhishwa kwesikhathi esizayo kwe- ld kungase kusekele ukusebenza okufanayo kwamanye imindeni yezakhiwo.

-b ukufaka-format

--format = input-format

I-ld ingalungiselelwa ukusekela okungaphezu kweyodwa uhlobo lwefayela lezinto. Uma i- ld yakho ihlelwe ngale ndlela, ungasebenzisa i-- b inketho ukucacisa ifomethi kanambambili yefayili yento yokufakwayo elandela le nketho emgqeni wokulalelwayo. Ngisho noma i- ld ihlelwe ukusekela ezinye izakhiwo zezinto, ngokuvamile akudingeki ukuthi ucacise lokhu, njengoba i- ld kufanele ihlelwe ukulindela njengendlela yokufaka okuzenzakalelayo ifomethi evamile kumshini ngamunye. ifomu lokufakwayo luchungechunge lwetheksthi, negama lesakhiwo esithile esisekelwe ngamatayibrari e-BFD. (Ungahlela amafomethi okubambisana atholakalayo nge- objdump -i .)

Ungase ufune ukusebenzisa le nketho uma uxhumanisa amafayela ngefomethi engavamile kanambambili. Ungasebenzisa futhi -b ukushintsha amafomethi ngokucacile (uma uxhumanisa amafayili wezinhlobo zamafomethi ahlukene), ngokufaka phakathi -bb input-format ngaphambi eqenjini ngalinye lamafayela into ngendlela ethile.

Ifomethi ezenzakalelayo ithathwe kusukahlukahluka kwemvelo "GNUTARGET".

Ungakwazi futhi ukuchaza ifomethi yokufaka evela kwiskripthi, usebenzisa umyalo "TARGET";

-c ifayela le-MRI

- mri-script = i- MRI-commandfile

Ukuze kuhambelane nezixhumanisi ezikhiqizwa yi-MRI, ld yamukela amafayela weskriphthi abhaliwe ngolunye ulimi, oluvinjelwe ulimi lomyalo, oluchazwe esigabeni se-MRI Compatible Script Files semibhalo ye-GNU ld. Yethula amafayela weskripthi se-MRI ngenketho -c ; sebenzisa i- T inketho yokusebenzisa izikripthi zokuxhumanisa ezibhaliwe ngolimi jikelele lwezinhloso ld script. Uma i- MRI-cmdfile engekho, i- ld iyibheka emaqondeni acaciswe yinoma yikuphi -Izinketho .

-d

-dc

-dp

Lezi zindlela ezintathu zilingana; amafomu amaningi asekelwa ukuhambisana nezinye izixhumanisi. Banika isikhala emifanekisweni evamile ngisho noma ifayela eliphumayo elifakiwe lingachazwa (nge -r ). Umyalo weskripthi "FORCE_COMMON_ALLOCATION" unomphumela ofanayo.

-ngena

--entente = ukungena

Sebenzisa ukungena njengophawu olucacile lokuqalisa uhlelo lwakho, kunokuba iphuzu lokungena elizenzakalelayo. Uma kungekho uphawu olubizwa ngokuthi ukungena , i-linker izama ukufaka ukungena njengenombolo, bese usebenzisa lokho njengekheli lokungena (inombolo izohunyushwa ku-base 10; ungasebenzisa i- 0x ehamba phambili ngesisekelo se-16, noma i- 0 ehamba phambili for base 8).

-E

- export-dynamic

Uma udala i-dynamically linked executable, engeza wonke amatshwayo kuthebula lombonakaliso elinamandla. Ithebula lombonakaliso elinamandla liyisethi yamatshwayo avela ezintweni ezinamandla ngesikhathi sokugijima.

Uma ungasebenzisi lolu khetho, ithebula lombonakaliso elinamandla lizovame ukuqukatha kuphela lezo zimpawu ezibhekiswe ngento ethile enamandla eshiwo kusixhumanisi.

Uma usebenzisa "dlopen" ukulayisha into eguquguqukayo okumele ibuyele emuva kumpawu ezichazwe wuhlelo, kunokunye okunye okunamandla, cishe uzodinga ukusebenzisa le ndlela uma uxhumanisa uhlelo ngokwayo.

Ungasebenzisa futhi iskripthi se-version ukulawula ukuthi yiziphi izimpawu okufanele zengeziwe kuthebula lombonakaliso elinamandla uma ifomethi yokukhipha isekela. Bona incazelo ye -verver-script ku @ ref {VERSION}.

-EB

Xhumanisa izinto ezinkulu ze-endian. Lokhu kuthinta ifomethi yokukhipha okuzenzakalelayo.

-EL

Xhumanisa izinto ezincane. Lokhu kuthinta ifomethi yokukhipha okuzenzakalelayo.

-f

igama elihle

Lapho udala i-ELF into eyabelwe, setha insimu yangaphakathi ye-DT_AUXILIARY egameni elicacisiwe. Lokhu kusitshela isixhumanisi esinamandla ukuthi ithebula lesimpawu lesento okwabiwe kufanele lisetshenziswe njengesihlungi esisizayo etafuleni lesimboli segama lokwabelana ngalo.

Uma kamuva uxhumanisa uhlelo olumelene nalento yokuhlunga, ke, uma uqhuba uhlelo, isixhumanisi esinamandla sizobona inkambu ye-DT_AUXILIARY. Uma i-linker enamandla ixazulula noma yiziphi izimpawu ezisuka kusihlungi, izoqala ukuhlola ukuthi kunencazelo egameni lezinto ezibiwe . Uma kukhona eyodwa, izosetshenziselwa esikhundleni sencazelo kusihlungi sezinto. Igama lezinto ezabelwanayo akudingeki likhona. Ngakho igama lezinto ezihlanganyelwe lingasetshenziswa ukuhlinzekela ukuqaliswa okunye kwemisebenzi ethile, mhlawumbe ngokulungisa iphutha noma ukusebenza komshini othize.

Lolu khetho lungacaciswa kaningi. Okufakwayo kwe-DT_AUXILIARY kuzokwenziwa ngendlela evezwa ngayo emgqeni womyalo.

-F igama

igama le -filter

Lapho udala i-ELF into eyabelwe, setha inkambu yangaphakathi ye-DT_FILTER egameni elichaziwe. Lokhu kusitshela isixhumanisi esinamandla ukuthi ithebula lesimpawu sezinto okwabiwe ezidalwe kufanele zisetshenziswe njengesihlungi esethebula lesimboli segama lokwabelana ngalo.

Uma kamuva uxhumanisa uhlelo olumelene nalento yokuhlunga, ke, uma uqhuba uhlelo, isixhumanisi esinamandla sizobona inkambu ye-DT_FILTER. Isixhumanisi esinamandla sizoxazulula izimpawu ngokubhekwa kwetafula lesimboli sezinto ezihlungiwe njengesijwayelekile, kodwa empeleni zizoxhumanisa nezincazelo ezitholakala egameni lezinto ezibiwe . Ngakho-ke into yokuhlunga ingasetshenziswa ukukhetha i-subset yezimpawu ezinikezwe igama legama .

Abanye abaxhumanisi asebekhulile basebenzise i-- F inketho kulo lonke ithuluzi lokuqoqa izinkampani ngokucacisa ifomethi yefayela-nhlobo kokubili amafomu okufakwayo nokukhipha okukhiphayo. Isixhumanisi se-GNU sisebenzisa ezinye izindlela zalolu daba: izinketho -b , --form , --oformat , umyalo "we-TARGET" kwizikripthi zokuxhumanisa, ne-"GNUTARGET" eguquguqukayo yemvelo. Umxhumanisi we-GNU uzoyishaya indiva i-option ye -F uma engenzi i-ELF into eyabelwe.

Igama le- fini

Lapho udala i-ELF into ephathekayo noma eyabelwe, shayela u-NAME uma into ekhishwe noma eyabelwe ilayishwa, ngokubeka i-DT_FINI ekhelini lomsebenzi. Ngokuzenzakalelayo, i-linker isebenzisa i- "_fini" njengento yokubiza.

-g

Ukungazinaki. Kunikezwe ukuhambisana namanye amathuluzi.

-G value

--gpsize = inani

Hlela ubukhulu obukhulu bezinto ukuze ulungiselelwe usebenzisa irejista yeGP usayizi . Lokhu kusho kuphela amafomethi wefayili efana ne-MIPS ECOFF esekela ukubeka izinto ezinkulu nezincane zibe yizigaba ezahlukene. Lokhu kunganakwa kwezinye izakhiwo zefayili.

-h igama

-soname = igama

Uma udala i-ELF into eyabelwe, setha inkambu yangaphakathi ye-DT_SONAME egameni elichaziwe. Uma i-executable ixhunywe nento okwabiwe enomkhakha we-DT_SONAME, ke lapho okusebenzayo kusebenza khona isixhumanisi esithinta amandla sizozama ukulayisha into ebelwana ngayo echazwe yinkambu ye-DT_SONAME kunokuba isebenzise igama lefayela elinikezwe isixhumanisi.

-i

Yenza isixhumanisi esingaphezulu (okufana nokhetho -r ).

-inina

Lapho udala i-ELF into ephathekayo noma eyabelwe, shayela u-NAME uma into ephathekayo noma eyabelwe ilayishwa, ngokubeka i-DT_INIT ekhelini lomsebenzi. Ngokuzenzakalelayo, i-linker isebenzisa i- "_init" njengoba umsebenzi ukubiza.

-l ingobo yomlando

--library = ingobo yomlando

Engeza ingobo yomlando wefayela lomlando ohlwini lwawo amafayela okuxhumanisa. Le ndlela ingasetshenziswa noma iyiphi inombolo yezikhathi. I-ld izosesha uhlu lwayo lwendlela yokuvela kwe "libarchive.a" kuzo zonke izinqolobane ezicacisiwe.

Kuzinhlelo ezisekela amathebhulali abelwe, i- ld ingase ifune namathalabhu anezandiso ngaphandle kokuthi ".a". Ngokuqondile, kuzinhlelo ze-ELF ne-SunOS, i- ld izosesha umkhombandlela womtapo wezincwadi nge-extension ye ".so" ngaphambi kokusesha eyodwa nge-extension ye ".a". Ngomhlangano, ".so" isandiso sibonisa ilabhulali eyabelwe.

I-linker izosesha ingobo yomlando kanye kuphela, endaweni lapho ichazwe khona emgqeni womyalo. Uma ingobo yomlando ichaza uphawu olungazange lufakwe kwenye into evele ngaphambi kokugcina ingobo yomugqa womyalo, isixhumanisi sizofaka amafayela afanele kusuka ku-archive. Noma kunjalo, uphawu olungacacisiwe entweni ebonakala kamuva emgqeni womyalo ngeke kubangele ukuthi i-linker iphinde ifune ingobo yomlando futhi.

Bona i- ( okukhethwa kukho indlela yokuphoqa isixhumanisi ukucinga ingobo yomlando izikhathi eziningi.

Ungabhala i-archive efanayo izikhathi eziningi emgqeni womyalo.

Lolu hlobo lokusesha ingobo yomlando luyingqayizivele yezixhumanisi ze-Unix. Noma kunjalo, uma usebenzisa i- ld onAIX, inothi ukuthi ihlukile ekuziphatheni kwe-AIX isixhumanisi.

-L ukucinga

- umzila-wendlela = usesho

Engeza usesho lwezindlela ohlwini lwamathrekhi ld azosesha amareyibrari womlando kanye nezikripthi zokulawula i- ld . Ungasebenzisa le nketho noma iyiphi inombolo yezikhathi. Izinkomba ziseshwa ngendlela echazwe ngayo emgqeni womyalo. I-Directories ecacisiwe emgqeni womyalo iseshwa ngaphambi kokuqondisa okuzenzakalelayo. Zonke -Izikhetho zisebenza kuzo zonke izinketho -o , kungakhathaliseki ukuthi yiziphi izinketho ezivela kuzo.

Uma i- searchdir iqala ngo- "=", khona-ke i- "=" izothathwa indawo yesitoreji se- sysroot , indlela ecacisiwe uma i-linker ihlelwe.

Iqoqo elizenzakalelayo lezindlela eziseshiwe (ngaphandle kokuchazwa nge -L ) kuxhomeke kuloluphi imodi yokulondoloza ld esebenzisa, futhi kwezinye izimo futhi ukuthi ilungiselelwe kanjani.

Izindlela zingacaciswa futhi kusikripthi sokuxhumanisa nomyalo we- "SEARCH_DIR". I-Directories ichaze ngale ndlela iseshwa endaweni lapho iskripthi esixhumanisi sibonakala khona emgqeni wokula.

-m emulation

Hlanganisa isixhumanisi se- emulation . Ungabhala uhlu olutholakalayo olwenziwe nge- options -verbose noma -V .

Uma ngabe i-- m inketho ingasetshenzisiwe, ukukhwabanisa kuthathwe ku-"LDEMULATION" variable variable, uma lokho kuchazwa.

Uma kungenjalo, ukuguqulwa okuzenzakalelayo kuncike ekutheni i-linker ihlelwe kanjani.

-M

- imephu yemifanekiso

Phrinta imephu yokuxhumanisa kuya kokukhipha okujwayelekile. Ibalazwe lokuxhumanisa inikeza ulwazi mayelana nesixhumanisi, kuhlanganise okulandelayo:

*

Lapho amafayili nezinto nezimpawu zifakwe ememori.

*

Yeka ukuthi izimpawu ezivamile zinikwe.

*

Wonke amalungu omlando afakiwe kusixhumanisi, ngokushiwo uphawu olwenza ukuba ilungu lomlando lilethwe.

-n

- nmagic

Vala ukulungiswa kwekhasi lezigaba, bese ubhala umkhiqizo ngokuthi "NMAGIC" uma kungenzeka.

-N

--omagic

Setha izingxenye zombhalo nedatha ukuze zifundeke futhi zilotshwe. Futhi, ungahambisani nekhasi-ingxenye yedatha, futhi khubaza ukuxhuma ngokumelene namatayitela abelwe ngawo. Uma ifomethi yokukhiqiza isekela izinombolo zamasethi we-Unix, phawula okukhipha njenge "OMAGIC".

- hhayi-omagic

Le nketho ayinaki imiphumela eminingi ye- N option. Ibeka isigaba sombhalo ukuthi sifunde kuphela, futhi iphoqele ingxenye yesigaba ukuba ihambisane nekhasi. Qaphela - le nketho ayiniki amandla ukuxhumanisa ngokumelene namatayitela abelwe. Sebenzisa -Bdynamic ngalokhu.

-o okukhiphayo

--output = okukhiphayo

Sebenzisa okukhiphayo njengegama lohlelo olwenziwe ngu- ld ; uma le ndlela ingacacisiwe, igama a.out lisetshenziswe ngokuzenzakalelayo. Umyalo weskripthi othi "OUTPUT" ungacacisa negama lefayela eliphumayo.

-O level

Uma izinga liyizinombolo zezinombolo ezinkulu kune-zero ld elungiselela ukukhipha. Lokhu kungathatha isikhathi eside kakhulu futhi ngakho-ke kungenzeka ukuthi kunikwe kuphela amandla okubambisana okugcina.

-q

ukuhambela kabusha

Shiya izigaba zokuthutha kanye nokuqukethwe okuxhunyiwe okuxhunyiwe ngokugcwele. Ukuhlaziywa kwezixhumanisi zokuthunyelwa kanye namathuluzi wokuthuthukisa kungadinga lolu lwazi ukuze kwenziwe ukulungiswa okulungile kwama-executable. Lokhu kubangela ama-executable amakhulu.

Le ndlela okwamanje isekelwe kuphela kuma-platforms e-ELF.

-r

- isuswa

Yenza okukhiphayo okungenakususwa-okungukuthi, ukhiqiza ifayela elikhiphayo elingasebenza njengelungelo ld . Lokhu kuvame ukubizwa ngokuthi ukuxhuma okuyingxenye . Njengomphumela ohlangothini, ezindaweni ezisekela izinombolo zomlingo we-unix ezijwayelekile, le nketho iphinda ifake inombolo yomlingo wefayili yokukhipha ku-"OMAGIC". Uma le nketho ingacacisiwe, ifayela eliphelele likhiqizwa. Uma uxhumanisa izinhlelo ze-C ++, le nketho ngeke ixazulule izinkomba kubakhi; ukwenza lokho, sebenzisa -Uku .

Uma ifayela lokufakwayo lingenayo ifomethi efanayo nefayela eliphumayo, ukuxhuma okuyingxenye kusekelwa kuphela uma lelo fayela lokufaka lingenalo ukuthuthwa. Amafomethi okukhipha okuhlukile angaba nemingcele eyengeziwe; isibonelo amafomethi athile a "a.out" awasekeli ukuxhuma okuyingxenye namafayela okufakwayo kwamanye amafomethi nhlobo.

Le nketho yenza into efanayo -i .

-R igama lefayela

--just-symbols = igama lomsebenzisi

Funda amagama asayineni namakheli azo kusuka kufayela lokufaka igama , kodwa ungayisususi noma ulifake kulo mkhiqizo. Lokhu kuvumela ifayela lakho lokuphumayo ukuthi libheke ngokomfanekiso ezindaweni eziphelele zenkumbulo ezichazwe kwezinye izinhlelo. Ungasebenzisa le nketho ngaphezulu kwesisodwa.

Ukuze kuhambisane nezinye izixhumanisi ze-ELF, uma -I inketho ilandelwa igama lomhlahlandlela , esikhundleni segama lefayela, liphathwa njenge-- path option.

-s

- yenza konke

Thumela lonke ulwazi lwefayili kusuka efayeleni lokuphumayo.

-S

- hlehlisa-ukuphumula

Thumela ulwazi lwesimboli se-debugger (kodwa hhayi zonke izimpawu) kusuka kufayili yokukhipha.

-t

- ithrekhi

Phrinta amagama amafayela wokufaka njengoba i- ld iwasebenzisela .

-Scriptfile

- iscript = scriptfile

Sebenzisa i- scriptfile njenge-script linker. Lesi script sishintsha iskripthi se- ld 's linker script (esikhundleni sokungeza kuso), ngakho-ke i- commandfile kumele icacise konke okudingekayo ukuchaza ifayela lokukhipha. Uma ngabe i- scriptfile engekho kumhlahlandlela wamanje, "ld" iyibheka emaqondeni ahlongozwe yinoma yikuphi okukhethwa kukho -L . Izinketho eziningi- T ziqoqa.

-uphawu

-undefined = uphawu

Qinisekisa uphawu lokungena efayeleni lokukhipha njengophawu olungacacisiwe. Ukwenza lokhu, ngokwesibonelo, kungabangela ukuhlanganiswa kwamamodyuli angeziwe kusuka emitatsheni ejwayelekile. -Ungabuyekezwa ngezindlela ezihlukile zokukhetha ukufaka izimpawu ezingeziwe ezingeziwe. Lolu khetho lulingana nomyalo we-"EXTERN" we-linker script.

-Um

Kunoma yini enye ngaphandle kwezinhlelo ze-C ++, le nketho ilingana no -r : idala ukukhishwa okungenakususwa-okungukuthi, ifayela eliphumayo elingase libe yindlela yokufaka ku- ld . Uma uxhumanisa izinhlelo ze-C ++, -Ur uxazulula izinkomba kubakhi , ngokungafani -n . Akusebenzi ukusebenza -Ukusebenzisa kumafayela ayezihlanganise nabo -Uku ; uma ithebula lomakhi lakhiwe, alikwazi ukungezwa. Sebenzisa -Ukuphela kwesixhumanisi sokugcina esinqunyiwe, futhi -u kwabanye.

--unique [= ISIGABA ]

Idala isigaba sokukhishwa esahlukisiwe saso sonke isigaba sokufakwayo esifanelana ne- SECTION , noma uma i-wildcard yokuzikhethela i- SECTION argument ishoda, kuzo zonke izingxenye zokufaka izintandane. Isigaba sezintandane asikhulumi ngokuqondile kusikripthi sokuxhumanisa. Ungasebenzisa le nketho izikhathi eziningi emgqeni womyalo; Ivimbela ukuhlanganiswa okujwayelekile kwezigaba zokufakwayo ngegama elifanayo, okwenzela izabelo zesigaba esiphumelayo kusikripthi sokuxhumanisa.

-v

--verver

-V

Bonisa inombolo yenguqulo ye- ld . I -V inketho ibuye ibhale izinsiza ezisekelwayo.

-x

- hlola-konke

Susa zonke izimpawu zendawo.

-X

- gcina abantu-bendawo

Susa zonke izimpawu zasendaweni zesikhashana. Ngezinhloso eziningi, yizo zonke izimpawu zendawo ezizoqala amagama abo ngoL .

-yimpawu

- ithrekhi-uphawu = uphawu

Phrinta igama lefayela ngalinye elixhunyiwe lapho uphawu luvela khona. Lolu khetho lunganikwa noma iyiphi inombolo yezikhathi. Kuzinhlelo eziningi kudingekile ukuba ulungiselele ukugxila.

Lolu khetho luwusizo uma unesignali engavumelekile kusixhumanisi sakho kodwa awukwazi ukuthi ireferensi ivela kuphi.

-Yindlela

Engeza indlela eya endleleni yokucinga yama-library ezenzakalelayo. Le nketho ikhona ngokuvumelana kweSolaris.

-igama elingukhiye

Amagama angukhiye aqaphelayo angama "initfirst", "ahlukanise", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "manje", "umsuka", "combreloc", "nocombreloc" ne "nocopyreloc ". Amanye amagama angukhiye azinakwa ukuhambisana kwe-Solaris. "initfirst" ibonisa into okufanele iqaliswe kuqala ngesikhathi sokugijima ngaphambi kwanoma yiziphi ezinye izinto. "phakamisa" ibonisa into ekhonjiswa ngayo ithebula layo lokufanekisa ngaphambi kwazo zonke izimpawu kodwa i-primary executable. "loadfltr" ibonisa into okuyizinhlanzi zayo ezicubungulwa ngaso leso sikhathi ngesikhathi sokugijima. "nodefaultlib" ibonisa into okufunwa ngayo ukufuna ukuxhomekeka kwalento noma yiziphi izindlela zokusesha zomtapo ezizenzakalelayo. "nodelete" ibonisa into engeke ilayishwe ngesikhathi sokugijima. "i-nodlopen" ibonisa into engatholakali ukuba "idle". "i-nodump" ibonisa into engeke ilahlwe "dldump". "manje" ibonisa into ngokubopha kwesikhathi sokugijima okungenabuvi. "umsuka" umaka into engase ibe ne-ORIGIN. "ukuhlonza" kususa izimpawu ezingachaziwe. "i-muldefs" ivumela izincazelo eziningi. "i-combreloc" ihlanganisa izingxenye eziningi zokuhambisa kabusha futhi iwafake ukuze wenze uphawu lokugcina isikhashana lokususa i-caching lube namandla.

"i-nocombreloc" ikhubaza izingxenye eziningi zokungena ezihlangene. "i-nocopyreloc" ivimbela ukukhiqizwa kwekhophi yokuthutha.

- ( ezinqolobaneni -)

- i-archives-group -end-group

Ama- archives kufanele abe uhlu lwamafayela womlando . Kungenzeka kube ngamagama wefayela ecacile, noma -izinketho .

Ama-archive achaziwe asetshenzwa ngokuphindaphindiwe kuze kube yilapho kungabonakali izinkomba ezintsha ezingachaziwe. Ngokujwayelekile, ingobo yomlando isesha kanye kuphela ngendlela ecaciswe emgqeni womyalo. Uma uphawu kuleyo nqolobane edingekayo ukuxazulula uphawu olungachaziwe okukhulunywe ngalo ngento e-archive evelayo kamuva emgqeni womyalo, isixhumanisi ngeke sikwazi ukuxazulula leyo nkomba. Ngokuhlanganisa ama-archives, bonke baseshwa ngokuphindaphindiwe kuze kube yilapho zonke izinkomba ezikhona zixazululwa.

Ukusebenzisa le nketho kunenani elibi lokusebenza. Kungcono ukuyisebenzisa kuphela uma kunezingcaphuno ezingenakuvinjelwa ezinkimbinkimbi phakathi kwezingqimba ezimbili noma ngaphezulu.

- thola-angaziwa-okufakwayo-umcibisholo

- hhayi-ukwamukela-engaziwa-okufakwayo-arch

Itshela isixhumanisi ukwamukela amafayela okufakwayo awakwazi ukuwazisa izakhiwo. Ukucabanga ukuthi umsebenzisi uyazi ukuthi benzani futhi ngokuzithandela ufuna ukuxhumanisa kulezi fayili zokufaka ezingaziwa. Lokhu kwakuwukuziphatha okuzenzakalelayo kwesixhumanisi, ngaphambi kokukhishwa 2.14. Ukuziphatha okuzenzakalelayo kusuka ekukhululweni kwama-2.14 kuya phambili ukulahla amafayela okufakwayo, ngakho-ke ukwemukela okungaziwa-okufakwayo- ukukhethwa kwengeziwe ukubuyisela ukuziphatha okudala.

-usa igama elingukhiye

Lolu khetho alunaki ukuhambisana kwe- SunOS .

-Bdynamic

-dy

-call_shared

Xhumanisa ngokumelene nemitapo yolwazi enamandla. Lokhu kuhloswe kuphela kumapulatifomu amashabhuthi abelwe ngawo asekelwe. Lolu khetho luvame ukuzenzakalelayo kuma-platforms anjalo. Ukuhluka okuhlukile kwalolu khetho kungenxa yokuhambisana nezinhlelo ezihlukahlukene. Ungasebenzisa le nketho izikhathi eziningi emgqeni womyalo: kuthinta ukufundwa komtapo-izinketho ezilandelayo.

-Bugroup

Setha i-flag "DF_1_GROUP" ekungeneni "kwe-DT_FLAGS_1" kusigaba esinamandla. Lokhu kubangela ukuthi isixhumanisi sokuqalisa sikwazi ukuphatha i-lookups kule nto kanye nokuxhomekeka kwayo okumele kwenziwe kuphela ngaphakathi kweqembu. - akuchazwanga kahle. Lolu khetho lusemqoka kuphela kuma-platforms e-ELF asekela amathebhulali abelwe ngawo .

-Bstatic

-dn

-non_shared

-static

Ungaxhunyiwe ngokumelene nemilabhulali eyabelwe. Lokhu kuhloswe kuphela kumapulatifomu amashabhuthi abelwe ngawo asekelwe. Ukuhluka okuhlukile kwalolu khetho kungenxa yokuhambisana nezinhlelo ezihlukahlukene. Ungasebenzisa le nketho izikhathi eziningi emgqeni womyalo: kuthinta ukufundwa komtapo-izinketho ezilandelayo.

-Izinkinga

Lapho udala ilabhulali eyabelwe, ubophe izinkomba eziyimpawu zomhlaba kuncazelo ngaphakathi kwelabhulali eyabelwe, uma ikhona. Ngokuvamile, kungenzeka ukuthi uhlelo luhlanganiswe nelabhulali eyabelwe ukunyusa incazelo ngaphakathi kwelabhulali eyabelwe. Lolu khetho lusemqoka kuphela ku-ELFplatforms asekela amathebhulali abelwe.

- izingxenye ezihlosiwe

- hhayi-hlola izigaba

Icela isixhumanisi ukuthi angaboni amakheli wesigaba ngemuva kokuthi abelwe ukuthi abone ukuthi kukhona okunye okuqoqwayo. Ngokuvamile i-linker izokwenza lesi sheke, futhi uma ithola noma yikuphi ukuqoqa kuyoba nemilayezo efanelekile yephutha. I-linker uyazi ngakho, futhi ivumela izigaba ezigqamile. Ukuziphatha okuzenzakalelayo kungabuyiselwa ngokusebenzisa inkinobho yomugqa womyalo - izingxenye zokucheka .

- cref

Ukukhipha ithebula lokubhekisela emgqeni. Uma ifayela lebalazwe lokuxhumanisa lenziwa, ithebula lokubhekisela ekubhekeni liphrinta kwifayela lemephu. Uma kungenjalo, liphrintiwe ekuphumeni okujwayelekile.

Ifomethi yetafula ilula ngokuzithandela, ukuze ikwazi ukucubungulwa kalula ngombhalo uma kunesidingo. Izimpawu zinyatheliswa, zihlungwa ngegama. Ngokomfanekiso ngamunye, uhlu lwamagama wefayela lunikezwa. Uma uphawu luchazwa, ifayela lokuqala elibalwe yindawo yencazelo. Amafayela asele aqukethe izinkomba ezifanekisela uphawu.

- hhayi-ichaza-evamile

Lolu khetho luvimbela isabelo samakheli emaqenjini avamile. Umyalo weskripthi "INHIBIT_COMMON_ALLOCATION" unomphumela ofanayo.

Inketho ye-inno-define-evamile ivumela ukunciphisa isinqumo sokukwabela amakheli kuzimpawu ezijwayelekile kusukela ekukhethweni kohlobo lwefayela lokukhipha; uma kungenjalo uhlobo oluthile olungenakunqunyulwa uhlobo lokushicilela amabizo amakheli ezimpawu ezivamile. Ukusebenzisa i- non-define-evamile kuvumela izimpawu ezijwayelekile ezibhekiswe kumtapo wolwazi okwabelwana ngazo ukuthi zinikezwe amakheli kuphela ohlelweni oluyinhloko. Lokhu kuqeda isikhala esingekho engasetshenziswanga emtatsheni ohlanganyelwe, futhi kuvimbela noma yikuphi ukudideka ngokuxazulula ukuphindaphinda okungalungile uma kunamamojula amaningi ashukumisayo anezinkambo zokucinga ezikhethekile zokusungulwa kwesigqi se-runtime.

- uphawu lwefrimu = inkulumo

Dala uphawu lomhlaba jikelele efayeleni lokuphumayo, eliqukethe ikheli eliphelele elihlinzekwa ngombhalo. Ungasebenzisa le nketho izikhathi eziningi kunesidingo ukuze uchaze izimpawu eziningi emgqeni womyalo. Ifomu elilinganiselwe le-arithmetic lisekelwe enkulumweni kulo mongo: unganika isikhathi esiphezulu se-hexadecimal noma igama lesikhangiso esivele sikhona, noma sebenzisa "+" no- "-" ukwengeza noma ukukhipha izingcindezi ze-hexadecimal noma izimpawu. Uma udinga izinkulumo ezengeziwe, cabanga ukusebenzisa ulimi lomyalo wokuxhumanisa kusuka kusikripthi. Qaphela: akumele kube khona isikhala esimhlophe phakathi kwesimboli , uphawu olulinganayo (`` `''), nokukhuluma .

--demangle [= isitayela ]

- hambani

Lezi zinketho zilawula ukuthi ungadonsa amagama esimboli kumilayezo yephutha kanye nezinye izinto ezivela. Uma i-linker etshelwe ukuba idilize, izama ukwethula amagama ephawulekayo ngendlela efundwayo: ihlanganisa ukuhoxisa okuholela phambili uma isetshenziswe ifomethi yefayili, futhi iguqula amagama e-C ++ angamatshwayo abe amagama afundwa ngumsebenzisi. Abahlanganisi abahlukene banezindlela ezehlukene zokuhamba. Ingxabano yesitayela yokudibanisa okukhethwa kukho okukhethwa kukho ingasetshenziswa ukukhetha isitayela esifanelekayo sokudonswa kwezimpahla se-compiler yakho. I-linker izokwenqabela ngokuzenzakalelayo ngaphandle kokuthi imvelo evamile COLLECT_NO_DEMANGLE isethiwe. Lezi zinketho zingasetshenziselwa ukudlula okuzenzakalelayo.

ifayela lokuxhumanisa - i -dynamic

Setha igama lesixhumanisi esinamandla. Lokhu kubalulekile kuphela uma kudala ama-executable e-ELF axhunyiwe. Isixhumanisi esizenzakalelayo esixhumanisayo sivamisekile; ungasebenzisi lokhu ngaphandle kokuthi wazi ukuthi wenzani.

ukuthutha-okufudumele

Le ndlela inenjongo kuphela uma uxhumanisa ikhodi ye-PIC ehlanganisiwe ye-MIPS, eyenziwe yi-option -membedded-pic ku-GNU compiler kanye ne-assembler. Kubangela ukuthi i-linker idale itafula elingasetshenziswa ngesikhathi sokuqalisa ukuhambisa noma iyiphi idatha eqalisiwe ngokuyisisekelo kumanani we-pointer. Bona ikhodi ku-testuite / ld-empic ngemininingwane.

- izixwayiso zomzimba

Phatha zonke izixwayiso njengamaphutha.

- ukusebenza-exe-suffix

Qiniseka ukuthi ifayela eliphumayo linesisindo se-.exe.

Uma ifayela elikhiphayo elihlanganisiwe ngokugcwele elihlanganisiwe lingenayo isiphequluli " exe " noma " .dll ", le nketho iphoqa isixhumanisi ukukopisha ifayela lokukhipha kwelinye igama elifanayo nge ".exe". Lolu khetho luwusizo uma usebenzisa amafayili akwa Unix angenakuqondiswa kumsingathi waseMicrosoft Windows, ngoba ezinye izinguqulo zeWindows ngeke zigijime isithombe ngaphandle kokuba ziphelelwe yisiqu ".exe".

izigaba -no-gc

- izingxenye ezigciniwe

Nika amandla ukuqoqwa kwemfucumfucu yezigaba zokufaka ezingasetshenzisiwe. Kuthathwa ngamathekisthi awasekeli lolu khetho. Lolu khetho aluhambisani no-, futhi alufanele lusetshenziswe ngokuxhumanisa okunamandla. Ukuziphatha okuzenzakalelayo (ngokungenzi lokhu qoqo lokudoba ) kungabuyiselwa ngokucacisa - hhayi-gc-izingxenye emgqeni womyalo.

--Usizo

Phrinta isifinyezo sezinketho zomugqa womyalo ekuphumeni okujwayelekile nokuphuma.

- isheke-usizo

Phrinta isifinyezo kuzo zonke izinketho ezibhekiswe kuzo ekuphumeni okujwayelekile nokuphuma.

-Map mapfile

Phrinta imephu yokuxhumanisa ku- mapfile yefayela. Bheka incazelo ye-option, ngenhla.

- ukugcina-inkumbulo

I-ld evamile isebenza ngokusheshisa ngokusetshenziswa kwememori ngokulondoloza amatafula amatshwayo amafayela okufakwayo ememori. Lolu khetho lutshela i- ld esikhundleni salungiselele ukusetshenziswa kwememori, ngokuphindaphindiwe amatafula okufanekisa uma kudingeka. Lokhu kungadingeka uma i- ld iphuma isikhala sememori ngenkathi ixhumanisa i-executeable enkulu.

- akuchaziwe

-z ihluleka

Ngokuvamile uma udala ilabhulali eyabelwe engekho engokomfanekiso, izimpawu ezingavumelekile zivunyelwe futhi zishiywe ukuxazululwa ngumthwalo wokulayisha kwesikhathi. Lezi zinketho azivimbeli izimpawu ezinjalo ezingachaziwe.

- vumela-multiple-definition

-z muldefs

Ngokujwayelekile uma uphawu luchazwa izikhathi eziningi, isixhumanisi sizobika iphutha elibulalayo. Lezi zinketho zivumela izincazelo eziningi nencazelo yokuqala izosetshenziswa.

- vumela-shlib-engacacisiwe

Vumela izimpawu ezingavumelekile ezintweni ezabelwana ngazo noma ngabe - akuchazwanga kahle. Umphumela wenetha uzoba ukuthi izimpawu ezingavumelekile ezintweni ezijwayelekile zizoqhubeka zenza iphutha, kodwa izimpawu ezingachaziwe ezabelwana ngazo zizobekwa. Ukuqaliswa kwe-non-kufined kwenza ukucabanga ukuthi isixhumanisi se-runtime sizokhazamisa izimpawu ezingafani. Noma kunjalo kukhona okungenani uhlelo olulodwa (i-BeOS) lapho izimpawu ezingavumelekile kumatayibhade okwabelwana ngayo kuvamile kusukela i-kernel ibalapha ngesikhathi sokulayisha ukukhetha ukuthi yikuphi umsebenzi owufanele kakhulu kumklamo wamanje. IE ikwazi ukukhetha umsebenzi omele we-memset. Ngokusobala kuyinto evamile yezincwadi ze-HPPA ezabelwana ngazo ukuba zibe nezimpawu ezingafani.

- inguqulo engaziwa

Ngokujwayelekile uma uphawu lunequlo elingavumelekile, isixhumanisi sizoyishaya indiva. Le ndlela ayikhipha izimpawu ngenguqulo engafakiwe futhi iphutha elibulalayo lizokhishwa esikhundleni.

- ungaxwayisi-ukungahambisani

Ngokujwayelekile i- ld izonikeza iphutha uma uzama ukuxhumanisa ndawonye amafayela wokufakwayo ahambelanisiwe ngesizathu esithile, mhlawumbe ngenxa yokuthi ahlanganisiwe kubaseprosesa abahlukene noma ngezimo ezihlukahlukene. Lolu khetho lutshela ld ukuthi kufanele luvumele ngephutha ukuvumela amaphutha anjalo. Le ndlela kufanele isetshenziswe kuphela ngokunakekelwa, ezimweni lapho uthathe isenzo esikhethekile esiqinisekisa ukuthi amaphutha okuxhumanisa ayifanelekile.

- okungenayo yonke-ingobo yomlando

Vala umphumela wokukhethwa kwe-archive-archive yamafayela alondoloziwe we-archive .

- hlela-i-exec

Gcina ifayela elikhiphayo elikhiphayo nanoma isiphi isasebenza. Ngokuvamile, i-linker ngeke ikhiqize ifayela eliphumayo uma lihlangabezana namaphutha phakathi nenqubo yokuxhumanisa; iphuma ngaphandle kokubhala ifayela eliphumayo uma liletha noma yikuphi iphutha.

-nostdlib

Amafayela okubhuka kuphela okusesho okucacisiwe kulayini lomyalo. Amabhuku amareyibrari achazwe kwizikripthi zokuxhumanisa (kufaka phakathi izikripthi zokuxhumanisa ezichazwe kumugqa womyalo) azitholakali.

- ifomathi yokukhiqiza -oformat

I-ld ingalungiselelwa ukusekela okungaphezu kweyodwa uhlobo lwefayela lezinto. Uma i- ld yakho ihlelwe ngale ndlela, ungasebenzisa i -oformat inketho ukucacisa ifomethi kanambambili yefayili yezinto eziphumayo. Ngisho noma i- ld ihlelwe ukusekela ezinye izakhiwo zezinto, ngokuvamile akudingeki ukuthi ucacise lokhu, njengoba i- ld kufanele ihlelwe ukukhiqiza ifomethi yokukhiqiza okuzenzakalelayo ifomethi evamile kumshini ngamunye. okukhiphayo-format yinkimbinkimbi yombhalo, igama lesakhiwo esithile esisekelwe ngamathuluzi e-BFD. (Ungabhala amafomethi okubambisana atholakalayo nge- objdump -i .) Umyalo weskripthi "OUTPUT_FORMAT" ungabuye ucacise ifomethi yokukhipha, kodwa le nketho iwudlula ngaphezulu.

-qmagic

Lolu khetho alunaki ukuhambisana kwe-Linux.

-Ukuthi

Le nketho ayinaki ukuhambisana kwe-SVR4.

--Nethezeka

Okukhethwa kukho ngemiphumela encike emshinini. Lolu khetho lusekelwa kuphela kumathekthhi ambalwa.

Kwamanye amapulatifomu, ukhetho lwe- selective lwenza ukulungiswa komhlaba konke okungenzeka lapho ukuxazulula isixhumanisi kukhuluma ohlelweni, njengokuzilibazisa amamodi ekheli kanye nokwenza imiyalo emisha kwifayili yezinto ezikhiphayo.

Kwamapulatifomu athile lokhu kulungiselelwa kwesikhathi sezwe lokuxhumanisa kungenza ukuguqulwa okungokomfanekiso kokusebenza okungenakwenzeka. Lokhu kuyaziwa ukuthi kuyinkinga ye-Matsushita MN10200 kanye noMN10300 umndeni wabaprosesa.

On amapulatifomu lapho lokhu akusekelwe, --relax yamukelwa, kodwa inganakwa.

- thola igama lokufaka igama lefayela

Gcina kuphela izimpawu ezifakwe efayeleni lefayili, ukulahla bonke abanye. igama lefayili lifayili ephathekayo, enegama elilodwa lomfanekiso ngamunye. Lolu khetho luwusizo ikakhulukazi ezindaweni (ezifana ne-VxWorks) lapho ithebula elikhulu lombonakaliso lomhlaba wonke liqoqiwe kancane kancane, ukugcina imemori yesikhathi sokugijima.

- ukuthola-izimpawu-ifayela alilahli izimpawu ezingachaziwe , noma izimpawu ezidingekayo zokuthutha.

Ungase ucacise kuphela - uthola-izimpawu-ifayela kanye nomugqa womyalo. Iphezulu -s futhi -S .

-rpath tshela

Engeza isiqondisi kumzila wokusesha welabhulali yokugcina. Lokhu kusetshenziselwa ukuxhumanisa i-ELF ebonakalayo ngezinto ezabelwana ngazo. Zonke izimpikiswano zempendulo zikhonjiswe futhi zidluliselwe kusixhumanisi sokuqalisa, esisebenzisayo ukuthola izinto ezabiwe ngesikhathi sokuqalisa. I-- rpath inketho isetshenziselwa lapho uthola izinto ezabelwana ngazo ezidingekayo ngezinto ezibiwe ngokucacile ezifakwe kusixhumanisi; bheka incazelo ye-- path-link yokukhethwa kukho. Uma -rpath ingasetshenziswanga uma uxhumanisa i-ELF ephathekayo, okuqukethwe kokuhlukahluka kwemvelo "LD_RUN_PATH" kuzosetshenziswa uma kuchazwa.

I-- rpath inketho ingasetshenziswa futhi ku-SunOS. Ngokuzenzakalelayo, ku-SunOS, i-linker izokwakha i-patch yokusesha yesikhathi sokugijima kuzo zonke izinketho -Izinketho ezinikezwayo. Uma inketho e-- path isetshenziswa, indlela yokusesha yesikhathi sokuqalisa iyokwenziwa kuphela ngokusebenzisa izinketho- zangaphakathi , ukungazinaki izinketho -L . Lokhu kungasiza uma usebenzisa i-gcc, enezela eziningi -Izikhetho ezingase zibe kwizinhlelo zefayela eziphakanyisiwe ze-NFS.

Ukuze kuhambisane nezinye izixhumanisi ze-ELF, uma -I inketho ilandelwa igama lomhlahlandlela , esikhundleni segama lefayela, liphathwa njenge-- path option.

-rpath-link DIR

Uma usebenzisa i-ELF noma i-SunOS, ilabhulali eyodwa eyabelwe ingadinga enye. Lokhu kwenzeka uma isixhumanisi esithi "ld-shared" sihlanganisa ilabhulali eyabelwe njengomunye wamafayela wokufaka.

Lapho i-linker ehlangana nokuxhomekeka okunjalo lapho wenza isixhumanisi esingabelwe ngaso, esingasuseki, sizozama ngokuzenzekelayo ukuthola ilabhulali eyabelwe edingekayo bese uyifaka kwisixhumanisi, uma ingafakwa ngokucacile. Esimweni esinjalo, inketho ye--pp-link ichaza isethi yokuqala yezinkomba ukucinga. Okukhethwa kukho -rpath-link kungacacisa ukulandelana kwamagama esiqondisi noma ngokucacisa uhlu lwamagama ahlukaniswe ngamakholoni, noma ngokuvela izikhathi eziningi.

Le ndlela kufanele isetshenziswe ngokucophelela njengoba idlula indlela yokusesha okungenzeka kube nzima ukuhlanganiswa kumtapo wolwazi okwabelwana ngawo. Esimweni esinjalo kungenzeka ukusebenzisa ngendlela engahlosiwe indlela yokucinga ehlukile kunokuba isixhumanisi sokuqalisa sikwenze.

I-linker isebenzisa lezi zindlela ezilandelayo zokusesha ukuthola izintabili ezidingekayo ezidingekayo.

1.

Noma yiziphi izinkomba ezichazwe yi- options-link yokuxhumanisa .

2.

Noma yiziphi izinkomba ezichazwe nge- options ongakhetha kuzo. Umehluko phakathi kwe-- rpath ne -rpath-link yilokho izinkomba ezichazwe yi- options ongakhetha kuzo zifakiwe ekusebenziseni futhi zisetshenziswe ngesikhathi sokugijima, kanti inketho ye--path-link isebenza kuphela ngesikhathi sokuxhumanisa. Kungenxa yesixhumanisi sokuzalwa kuphela.

3.

Kuhlelo lwe-ELF, uma i-- rpath ne "rpath-link" izinketho zingasetshenziswanga, cinga okuqukethwe kokuguquguquka kwemvelo "LD_RUN_PATH". Kungenxa yesixhumanisi sokuzalwa kuphela.

4.

Ku-SunOS, uma inketho ye-- rpath ingasetshenziswanga, sesha noma yiziphi izinkomba ezicacisiwe usebenzisa izinketho -L .

5.

Kumxhumanisi womdabu, okuqukethwe kokuhlukahluka kwemvelo "LD_LIBRARY_PATH".

6.

Ku-ELF isixhumanisi esizalisayo, izinkomba ku- "DT_RUNPATH" noma "DT_RPATH" zomtapo ohlanganyelwe zifunwa amabilabhu abelwe ngawo adingekayo. Okungenayo "oku-DT_RPATH" kungabanjwanga uma kufakwe "ukungena kwe-DT_RUNPATH".

7.

Izinkomba ezizenzakalelayo, ngokuvamile / lib kanye / usr / lib .

8.

Ukuze isixhumanisi somdabu kuhlelo lwe-ELF, uma ifayili /etc/ld.so.conf ikhona, uhlu lwamafayela atholakele kulelo fayela.

Uma ilabhulali eyabelwe edingekayo ayitholakali, isixhumanisi sizokhipha isixwayiso futhi siqhubeke nesixhumanisi.

-washiwo

-Bukahleka

Yakha ilabhulali eyabelwe. Lokhu okwamanje kusekelwa kuphela ku-ELF, i-XCOFF ne-SunOS amapulatifomu. Ku-SunOS, isixhumanisi sizodala ngokuzenzakalelayo ilabhulali eyabelwe uma i-inketho engeke isetshenziswe futhi kukhona izimpawu ezingavumelekile kusixhumanisi.

- ejwayelekile-evamile

Lolu khetho lutshela i- ld ukuhlunga izimpawu ezivamile ngesayizi uma zibeka kuzo izigaba ezikhishweyo ezifanele. Okokuqala woza zonke izimpawu ze-byte, khona-ke zonke izinto ze-byte ezimbili, ngakho-ke zonke ezine byte, bese konke okunye. Lokhu kuvimbela izikhala phakathi kwezimpawu ngenxa yezinkinga zokulungiswa.

- i-split-by-file [ usayizi ]

Kuyafana ne- split-by-reloc kodwa kudala isigaba esisha sokukhipha kwefayela ngalinye lokufaka uma usayizi ufinyelelwa. ubukhulu buyaguqukela usayizi we-1 uma kungenjalo.

- faka-by-reloc [ count ]

Uzama ukwakha izigaba ezengeziwe efayeleni eliphumayo ukuze kungabi nhlobo ingxenye ephumayo efayeleni equkethe okungaphezu kokubalwa kokubala . Lokhu kuyasiza lapho ukhiqiza amafayela amakhulu okuthutha ukulandwa kwamanye ama-kernels ngesikhathi sangempela nefomethi yefayela le-COFF; kusukela i-COFF ingaba ngaphezu kuka-65535 ukuthuthwa endaweni eyodwa. Qaphela ukuthi lokhu kuzohluleka ukusebenza ngefomethi yefayili yezinto ezingasisekeli izigaba ezingahambisani. I-linker ngeke ihlukanise izigaba zokufakwayo ngabanye zokubuyiswa, ngakho-ke uma ingxenye eyodwa yokufakwayo iqukethe okungaphezulu kokubala kokuthuthwa kwesigaba esisodwa okukhipha kuzoba nokuthuthwa okuningi. count of default to value of 32768.

- izibalo

Qondanisa futhi ubonise izibalo mayelana nokusebenza kwesixhumanisi, njengesikhathi sokusebenzisa nokusetshenziswa komemori.

- ifomethi yesikhashana

Kwezinye izinhloso, ukukhishwa kwe- ld kuhlukile ngezindlela ezithile kusuka ekuphumeni kwesinye isixhumanisi esivele sikhona. Lolu shintsho lucela i- ld ukusebenzisa ifomethi yendabuko kunalokho.

Isibonelo, ku-SunOS, i- ld ihlanganisa ukungena okuphindwe kabili kuthebula lesikhangiso lesimboli. Lokhu kunganciphisa ubukhulu befayela elikhiphayo ngolwazi oluphelele lokususa iphutha ngamaphesenti angaphezu kuka-30. Ngeshwa, uhlelo lwe-SunOS "dbx" alukwazi ukufunda uhlelo olulandelayo ("i-gdb" ayikho inkinga). I- switch-format-format sitshela i- ld ukuze ingahlanganisi ukungena okuphindwe kabili.

- isigaba-sokuqala kwesigaba segama = i- org

Thola isigaba efayeleni eliphumayo ekhelini eliphelele elinikezwe i- org . Ungasebenzisa le nketho kaningi izikhathi ezidingekayo ukuze uthole izingxenye eziningi emgqeni womyalo. i-org kumele ibe yinani elilodwa le-hexadecimal integer; ngokuhambisana nezinye izixhumanisi, ungashiya i-0x eholayo ngokuvamile ehlotshaniswa namanani we-hexadecimal. Qaphela: akumele kube khona isikhala esimhlophe phakathi kwegama lesigcawu , uphawu olulinganayo (`` `'' '), nokunye.

-Tbss isg

-Tdata isg

-Isig

Sebenzisa i- org njengekheli lokuqala le---- ngokulandelana- "i-bss", "idatha", noma ingxenye "yombhalo" wefayela eliphumayo. i-org kumele ibe yinani elilodwa le-hexadecimal integer; ngokuhambisana nezinye izixhumanisi, ungashiya i-0x eholayo ngokuvamile ehlotshaniswa namanani we-hexadecimal.

- -llll-verbose

- buyisa

Bonisa inamba yenguqulo ye- ld bese uhlunga izinkampani zokuxhuma ezisekelwe. Bonisa ukuthi yimaphi amafayela wokufaka angakwazi futhi angavuli. Bonisa iskripthi sokuxhumanisa esetshenziswa yisixhumanisi.

--verver-script = version-scriptfile

Cacisa igama le-script yenguqulo kusixhumanisi. Lokhu kuvame ukusetshenziswa lapho udala amalabhulali abelwe ngawo ukucacisa ulwazi olwengeziwe mayelana ne-heirarchy ye-version yelabhulali. Lolu khetho lusemqoka kuphela kuma-platforms e-ELF asekela amathebhulali abelwe ngawo.

- thola-evamile

Qaphela lapho uphawu olufanayo luhlanganiswa nolunye uphawu oluvamile noma nencazelo yegama. Izixhumanisi ze-Unix zivumela lokhu ukwenza umkhuba ongathandeki, kepha ukuxhumanisa kwezinye izinhlelo zokusebenza akusebenzi. Le ndlela ikuvumela ukuba uthole izinkinga ezingase zibe khona ekuhlanganiseni izimpawu zomhlaba jikelele. Ngeshwa, imilabhu ethile ye-C isebenzisa lo mkhuba, ngakho-ke ungathola ezinye izixwayiso mayelana nemifanekiso emilabhulali nakwezinhlelo zakho.

Kunezinhlobo ezintathu zezimpawu zomhlaba jikelele, eziboniswe lapha ngezibonelo zeC:

int i = 1;

Incazelo, ehamba esigabeni se-initialized yedatha yefayili ephumayo.

ngaphandle ngaphandle int;

Inkhulumomphendvulwano engakahlongozwanga, engabeki isikhala. Kumelwe kube nenye incazelo noma uphawu oluvamile lokuguquguquka endaweni ethile.

int i;

Uphawu oluvamile. Uma kukhona kuphela (eyodwa noma ngaphezulu) izimpawu ezivamile zokuguquguquka, kuya endaweni engaxhunywanga yedatha yefayela eliphumayo. I-linker ihlanganisa izimpawu eziningi ezivamile eziguquguqukayo ezifanayo zibe uphawu olulodwa. Uma zingama-different size, ikhetha ubukhulu obukhulu. Isixhumanisi siphendulela uphawu olufanayo sibe yisimemezelo, uma kunencazelo yokuhluka okufanayo.

Okukhethwa kukho -okujwayelekile kungakhipha izinhlobo ezinhlanu zezixwayiso. Isixwayiso ngasinye siqukethe imigqa emibili: owokuqala uchaza uphawu oluvele luhlangabezane nalo, kanti owesibili uchaza uphawu oludlule oluhlangene negama elifanayo. Esinye noma zombili izimpawu zizoba uphawu oluvamile.

1.

Ukuguqula uphawu olufanayo ibe yinkomba, ngoba kukhona kakade incazelo yephawu.

(): isixwayiso: ejwayelekile ` 'esiphezulu ngencazelo (
): isixwayiso: kuchazwe lapha

2.

Ukuguqula uphawu olufanayo kube yinkomba, ngoba incazelo elandelayo ye-uphawu ihlangabezane nayo. Lokhu kufana necala langaphambilini, ngaphandle kokuthi izimpawu zihlangene ngendlela ehlukile.

(): isixwayiso: incazelo ethi ` 'ejwayelekile (
): isixwayiso: ejwayelekile lapha

3.

Ukuhlanganisa uphawu olufanayo ngophawu olufanayo olufanayo olufanayo.

(): isixwayiso: evamile kakhulu ` < (
): isixwayiso: okuvamile okukhona lapha

4.

Ukuhlanganisa uphawu oluvamile ngesimboli esivamile esivamile.

(): isixwayiso: ejwayelekile ` 'egcwele ngaphezulu (
): isixwayiso: okujwayelekile okujwayelekile kulapha

5.

Ukuhlanganisa uphawu oluvamile ngesimiso esincane esidlule esivamile. Lokhu kufana necala langaphambilini, ngaphandle kokuthi izimpawu zihlangene ngendlela ehlukile.

(): isixwayiso: ejwayelekile ` 'ngaphezulu kwefayili encane (
): isixwayiso: okuncane okuvamile kulapha

- thola-abakhi

Qaphela uma kukhona abakhi bomhlaba wonke asetshenziswayo. Lokhu kusetshenziselwa kuphela amafomethi amafomethi wezinto ezimbalwa. Amafomethi afana ne-COFF noma i-ELF, isixhumanisi asikwazi ukubona ukusetshenziswa kwabakhi bomhlaba jikelele.

- thola-multiple-gp

Qaphela uma amanani amaningi wezinhlamvu zomhlaba wonke adingekayo efayeleni eliphumayo . Lokhu kusho kuphela abaprosesa, njenge-Alpha. Ngokuqondile, abanye abacubungula bafaka izikhathi ezinenani elikhulu esigabeni esikhethekile. Irejista ekhethekile (i-pointer yomhlaba jikelele) ikhomba phakathi kwalesi sigaba, ngakho-ke izingqinamba zingalayishwa ngendlela efanele ngemodi yokubhalisa isihlobo esilandelayo. Njengoba ukuhlelwa kwimodi yesihlobo sokubhalisa kwesisekelo kubhalisiwe futhi kuncane kakhulu (isb., Amabhuzu angu-16), lokhu kunciphisa usayizi ophezulu we-pool ehlala njalo. Ngakho-ke, ezinkampanini ezinkulu, kuvame ukudingeka ukusebenzisa amanani amaningi we-pointer jikelele ukuze ukwazi ukubhekana nazo zonke izinyathelo ezikhona. Le ndlela ikwenza isixwayiso sikhishwe noma kunini lapho kwenzeka khona.

- thola-kanye

Mane uxwayise kanye ngesimpawu ngasinye esingachaziwe, kunesinye ngesinye module esibhekisela kuyo.

- thola-isigaba-ukuvumelanisa

Qaphela uma ikheli lesigaba sokukhishwa liguqulwa ngenxa yokulungiswa. Ngokuvamile, ukulungiswa kuzobekwa isigaba sokufaka. Ikheli lizoshintshwa kuphela uma lingacacisiwe ngokucacile; okungukuthi, uma umyalo othi "IZIGABA" ungacacisi ikheli lokuqala lesigaba.

- ingobo yomlando

Ku-archive ngayinye okukhulunywe ngayo emgqeni wokulayisha ngemuva kokukhethwa kukho okulandelwayo, faka zonke ifayela lezinto ku-archive kusixhumanisi, kunokuba uhlole ingobo yomlando yefayili yezinto ezidingekayo. Lokhu kuvame ukusetshenziswa ukuguqula ifayela le-archive ibe kulabhulali eyabelwe, ukuphoqelela zonke izinto ukuba zifakwe kulabhulali eyabelwe. Le ndlela ingasetshenziswa kaningi.

Amanothi amabili uma usebenzisa le nketho kusuka ku-gcc: Okokuqala, i-gcc ayifuni ngalolu khetho, ngakho-ke kufanele usebenzise -Wl, -yolondolozwe-archive . Okwesibili, ungakhohlwa ukusebenzisa -Wl, -kungekho konke-ingobo yomlando ngemuva kohlu lwakho lwezinqolobane, ngoba i-gcc izokwengeza uhlu lwayo lwama-archives kusixhumanisi sakho futhi ungase ungathandi ukuthi leli flegi libachaphazele nalabo.

- uphawu lokungena

Sebenzisa umsebenzi wrapper for symbol . Noma yikuphi ukukhonjiswa okungaqondakali kwesignali kuzoxazululwa ku- "__ wrap_symbol". Noma yikuphi ukubhekisela okungaqondwanga "__real_symbol" kuzoxazululwa kube uphawu .

Lokhu kungasetshenziselwa ukuhlinzeka isikhwama somsebenzi wesistimu. Umsebenzi we-wrapper kufanele ubizwa ngokuthi "__wrap_symbol". Uma ufisa ukubiza umsebenzi wesistimu, kufanele ifonele "__ real_symbol".

Nasi isibonelo esincane:

akukho * __wrap_malloc (int c) {printf ("i-malloc ebizwa nge-% ld \ n", c); buyisela __real_malloc (c); }}

Uma uxhumanisa enye ikhodi ngaleli fayela usebenzisa - wrap malloc , ngakho wonke amakholi ku- "malloc" azobiza umsebenzi "__wrap_malloc" kunalokho. Ikholi ku- "__real_malloc" ku- "__wrap_malloc" izobiza umsebenzi "wangempela" we-"malloc".

Ungase ufise ukunikeza umsebenzi "__real_malloc" futhi, ukuze uxhumano ngaphandle kwe-option yokukhishwa kuyophumelela. Uma wenza lokhu, akufanele ufake incazelo ye "__ real_malloc" kufayili efanayo "__wrap_malloc"; Uma wenza, umhlangano angase axazulule ucingo ngaphambi kokuba isixhumanisi sinethuba lokusifaka "ku-malloc".

- ezitholakala-ezintsha-dtags

ama-dtag-amasha

Lo mxhumanisi angakha amathegi amasha ku-ELF. Kodwa izinhlelo ezindala ze-ELF zingase zingaziqondi. Uma ucacisa - amasha-amasha-amasha , amathegi ashukumisayo azodalwa njengoba kudingeka. Uma ucacisa - ama-dtag , ama-tags ashukumisayo amasha azodalwa . Ngokuzenzakalelayo, amathegi ashukumisayo amasha awadalwa. Qaphela ukuthi lezo zindlela zitholakala kuphela kuma -ELF amasistimu.

I386 PE linker isekela okukhethwa kukho, okubangela ukuthi okukhiphayo kube yilabhulali ethintekayo (DLL) esikhundleni sokusebenza okujwayelekile. Kufanele ukhethe okukhiphayo "* .dll" uma usebenzisa le nketho. Ngaphezu kwalokho, i-linker isekela ngokugcwele amafomethi "* .def" ajwayelekile, angachazwa emgqeni wokulayisha wokuxhumanisa njengefayili yezinto (eqinisweni, kufanele ilandele amarekhodi asithumela izimpawu kusuka, ukuqinisekisa ukuthi ahlangene, njengefayili yezinto ezijwayelekile).

Ngaphezu kokukhethwa okuvamile kuzo zonke izinhloso, i386 PE ukuxhaswa kokuxhaswa kokuxhaswa komlayini owengeziwe okuqondene nomgomo we-i386 PE. Izinketho ezithatha amagugu zingahle zihlukaniswe namanani abo ngesikhala noma uphawu olulinganayo.

-add-stdcall-alias

Uma kunikeziwe, izimpawu nge-stdcall suffix (@ nn ) zizothunyelwa njengoba zikhona futhi zibuye zithwetshiwe.

ifayela -fase- ifayela

Sebenzisa ifayela njengegama lefayela lapho ungagcina khona amakheli asezindaweni zonke zokuthutha ezidingekayo ekwenzeni i-DLL nge- dlltool .

-

Dala i-DLL esikhundleni sokusebenza okujwayelekile. Ungasebenzisa futhi-usebenzise noma ucacise i- "LIBRARY" kusifayela ".def" esinikeziwe.

- ekwazi-stdcall-fixup

- engaqondakali-stdcall-fixup

Uma isixhumanisi sithola uphawu olungenakukwazi ukuxazulula, sizozama ukwenza `` ukuxhuma ngokungahambisani '' ngokufuna elinye uphawu elichaziwe elihlukile kuphela kwifomethi yegama lesimboli (cdecl vs stdcall) futhi lizoxazulula leyo mbonakaliso ngokuxhumanisa kumdlalo. Isibonelo, uphawu olungacacisiwe "_foo" lungase luhlanganiswe nomsebenzi "_foo @ 12", noma uphawu olungachazwanga "_bar @ 16" lungase luxhunywe nomsebenzi "_bar". Uma i-linker enza lokhu, iphoqa isixwayiso, ngoba ngokuvamile kufanele ihluleke ukuxhumanisa, kodwa ngezinye izikhathi ukungenisa amaleyibrari akhiqizwa kuma-dll angaphandle angadinga lesi sici ukuba sisetshenziswe. Uma ucacisa - ukulungiswa-stdcall-fixup , lesi sici sivuliwe ngokugcwele futhi izixwayiso aziphrintiwe . Uma ucacisa - okungaqondakali-stdcall-fixup , lesi sici sikhutshaziwe futhi lokho okungafani nakho kubhekwa njengamaphutha.

- phuma-konke-izimpawu

Uma kunikwe, zonke izimpawu zomhlaba ezenzelwe ukwakha i-DLL zizothunyelwa yi-DLL. Qaphela ukuthi lokhu okuzenzakalelayo uma kungenjalo ngeke kube khona izimpawu ezithunyelwa ngaphandle. Uma izimpawu zithunyelwa ngokucacile ngamafayela we-DEF noma ngokuthekelisiwe ngokuphelele ngezimfanelo zomsebenzi, okuzenzakalelayo kungukuthi ungathumele ngaphandle kwanoma yini enye ngaphandle uma le nketho inikezwa. Qaphela ukuthi izimpawu "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", ne "impure_ptr" ngeke zithunyelwe ngokuzenzakalelayo. Futhi, izimpawu ezingenisiwe kusuka kwamanye ama-DLL ngeke ziphinde zithunyelwe, futhi ngeke izimpawu zikhomba isakhiwo sangaphakathi se-DLL esinjengalabo abaqala ngokuthi "_head_" noma ukuphela nge "_iname". Ngaphezu kwalokho, akukho zimpawu ezivela ku- "libgcc", "libstd ++", "libmingw32", noma "crtX.o" izothunyelwa. Izimpawu ogama lakhe liqala ngokuthi "__rtti_" noma "__builtin_" ngeke lithumele, ukusiza nge-C ++ DLL. Okokugcina, kukhona uhlu olubanzi lwezimpawu ze-cygwin-zangasese ezingathunyelwa (kusobala, lokhu kusebenza lapho ukwakhiwa kwe-DLL yezinhloso ze-cygwin).

Lezi zingu-cygwin-ezingafani: "_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 ", futhi" cishe ".

uphawu lwe -exclude- uphawu , uphawu , ...

Icacisa uhlu lwezimpawu ezingafanele zithunyelwe ngokuzenzakalelayo. Amagama wesimboli angahle anqunywe ngamakhompiyutha noma amakholoni.

- exclude-libs lib , lib , ...

Icacisa uhlu lwemitapo yolondolozo engobo yomlando okuvela kuzo izimpawu akumele zihanjiswe ngokuzenzekelayo. Amagama welabhulali angadliwa ngamakhompiyutha noma amakholoni. Ukucacisa "-exclude-libs KONKE" kungabandakanyi izimpawu kuwo wonke amareyibrari okugcina okuvela kuma-exports okuzenzekelayo. Izimpawu ezibhalwe ngokucacile kwifayili ye-.def zisathunyelwa, kungakhathaliseki ukuthi kuyini.

- ukulungiswa kwefile

Cacisa ukulungiswa kwefayela. Izingxenye ezifayili zizohlala ziqala kumafayela wefayili okuyizinombolo eziningi kule namba. Lokhu kufinyelela ku-512.

- hlela imali

- hlela imali , yenza

Cacisa inani lememori okufanele ligcinwe (futhi ngokuzithandela lenze) ukuthi lisetshenziswe njengenqwaba yalolu hlelo. Okuzenzakalelayo kungu-1Mb okugcinwe, 4K ezenziwe.

inani le-value -base

Sebenzisa inani njengekheli lesisekelo lenhlelo yakho noma i-dll. Lona indawo yokukhumbula imodeli ephansi kunazo zonke ezosetshenziswa uma uhlelo lwakho noma i-dll lilayishwa. Ukuze unciphise isidingo sokuthutha nokuthuthukisa ukusebenza kwama-dlls akho, ngamunye kufanele abe nekheli eliyisisekelo eliyingqayizivele futhi angafaki nanoma iyiphi enye i-dlls. Okuzenzakalelayo yi-0x400000 ye-executables, ne-0x10000000 yama-dlls.

-kill-at

Uma kunikeziwe, izixhumi ze-stdcall (@ nn ) zizosuswa kusuka ezimpawu ngaphambi kokuba zithunyelwe.

- value-image-version value

Isetha inamba enkulu '`image version' '. Ihluke ku-1.

- inani lama-osjor-os-version

Isetha inombolo enkulu ye `` version yangasese ''. Ihluke ku-4.

- value-subsystem-version value

Isetha inamba enkulu ye `` subsystem version ''. Ihluke ku-4.

- inani elingu-image-version-version

Isetha inombolo encane ye `` version yesithombe ''. Ihluke ku-0.

inani elingu-minor-os-version

Isetha inamba encane ye `` os version ''. Ihluke ku-0.

- value-subsystem-version value

Isetha inombolo encane ye `` subsystem version ''. Ihluke ku-0.

ifayela-defput-def

I-linker izodala ifayela lefayela elizoqukatha ifayela le-DEF elihambisana ne-DLL i-linker eyenza. Le fayela ye-DEF (okufanele ibizwa ngokuthi "* .def") ingasetshenziselwa ukwakha ilabhulali yokungenisa nge "dlltool" noma ingasetshenziswa njengokubhekisela kumpawu ezizenzekelayo noma ngokuthekelisiwe.

ifayela - implib

I-linker izodala ifayela lefayela elizoqukatha ukungenisa lib elihambisana ne-DLL i-linker eyakhayo. Lokhu ukungenisa lib (okumele kubizwe ngokuthi "* .dll.a" noma "* .a" kungasetshenziswa ukuxhumanisa amaklayenti ngokumelene ne-DLL ekhiqiziwe; lokhu kuziphatha kwenza kube lula ukweqa isinyathelo esithile esihlukile sokuthi "dlltool" yokungenisa amalebhulali.

isisekelo-esenziwe-auto-image-base

Khetha ngokuzenzakalela isisekelo sesithombe se-DLL, ngaphandle uma kubekiwe ukuthi usebenzise ingxabano "-image-basis". Ngokusebenzisa i-hash ekhiqizwa ku-dllname ukwakha izisekelo ezisehlukile zeDLL, ukushayisana kwememori kanye nokuthutha okungabambezela ukuqaliswa kohlelo kugwenywe.

isisekelo esingaziwa-esithombeni

Ungakhiqizi ngokuzenzakalelayo isisekelo sesithombe esiyingqayizivele. Uma kungekho isisekelo sesithombe esichazwe ngumsebenzisi ("-imise-base") bese usebenzisa ipulatifomu ezenzakalelayo.

isithwebuli sokuqala -sesha

Uma uxhumanisa i-dynamically ku-dll ngaphandle kwelabhulali yokungenisa, funa " .dll" ngokuphambili ku- "lib .dll". Lokhu kuziphatha kuvumela ukuhlukana okulula phakathi kwama-DLL okwakhiwe ahlukahlukene `` subplatforms '': native, cygwin, uwin, pw, njll. Ngokwesibonelo, i-cygwin DLLs isebenzisa "-dll-search-prefix = cyg".

- engenakwenzeka-ukungenisa okuzenzakalelayo

Ingabe ukuxhuma okuxubile kwe "_symbol" kuya "__imp__symbol" kokungeniswa kwe-DATA kusuka ku-DLL, futhi ukudala izimpawu zokuthungatha ezidingekayo uma ukhiqiza amabhuku angenayo nalabo DATAexports. Lokhu ngokuvamile 'kuzosebenza' --- kodwa ngezinye izikhathi ungabona lo mlayezo:

"okuguquguqukayo '' akukwazi ukungeniswa ngokuzenzakalela. Sicela ufunde imibhalo ye-ld's" -able-auto-import "ukuze uthole imininingwane."

Lo mlayezo uvela lapho inkulumo ethile (ephansi) ifinyelela ikheli ekugcineni linikezwe inani leminyango emibili (Win32 ukungenisa amatafula kuvumela kuphela). Izimo lapho lokhu kungase kwenze khona kufaka phakathi ukufinyelela kumazinyunyana omalungu wokwakha iziguquko ezifakiwe ukusuka ku-DLL, kanye nokusebenzisa inkomba ejwayelekile ibe yi-variable elandelwayo evela ku-DLL. Noma yikuphi ukuhlukahluka kwegama elingamagama amaningi (izigaba, ukuhlela, isikhathi eside, njll) kungabangela lesi simo sephutha. Noma kunjalo, kungakhathaliseki uhlobo oluqondile lwedatha yezinguquko ezithunyelwe ngaphandle, i-ld izoyithola njalo, ikhishwa isixwayiso, futhi uphume.

Kunezindlela eziningana zokubhekana nale nkinga, kungakhathaliseki ukuthi uhlobo lwedatha lwenani elithunyelwe:

Enye indlela ukusebenzisa inkinobho yokuqalisa-yokusetha isikhathi sokuqalisa. Lokhu kushiya umsebenzi wokulungisa izinkomba kukhodi yakho yeklayenti yezemvelo zokugijima, ngakho-ke le ndlela isebenza kuphela uma indawo yokusebenza yesikhathi sokugijima isekela lesi sici.

Isixazululo sesibili ukuphoqelela enye yezintambo 'ukuba ziguquke' okungukuthi, ezingaziwa futhi ezingenakulungiswa ngesikhathi sokuhlanganisa. Ngama-arrays, kunamathuba amabili: a) yenza i-indexee (ikheli le-array) iguquguquke, noma b) wenze inkomba ethi 'njalo' ibe yinto eguquguqukayo. Kanjalo:

uhlobo lwangaphandle ngaphandle extern_array []; extern_array [1] -> {uhlobo olunenkani * t = extern_array; t [1]}

noma

uhlobo lwangaphandle ngaphandle extern_array []; extern_array [1] -> {intando yeningi t = 1; extern_array [t]}

Ukuhlelwa kwezinto (kanye neminye eminingi yezinhlobo zamagama we-multiword) okukhethwa kukho kuphela ukwenza isakhiwo ngokwaso (noma ukude okude, noma ...):

extern struct s extern_struct; extern_struct.field -> {i-struct s * t = & extern_struct engazinzile; t-> insimu}

noma

ngaphandle ngaphandle eside eside ngaphandle_ll; i-extern_ll -> {inokude isikhathi eside * yendawo_ll = & extern_ll; * i-local_ll}

Indlela yesithathu yokubhekana nalolu bunzima ukushiya 'ukungenisa okuzenzakalelayo' kwesimiso esonakele bese uyiphawula nge "__declspec (dllimport)". Noma kunjalo, ngokusebenza okudinga ukusebenzisa i-compile-time #defines ukukhombisa ukuthi ngabe wakha i-DLL, ikhodi yokwakha iklayenti ezoxhuma ku-DLL, noma nje ukwakha / ukuxhumanisa emtatsheni wezintambo. Ngokwenza ukhetho phakathi kwezindlela ezihlukahlukene zokuxazulula ikheli 'eliqondile neenkinga eziqhubekayo', kufanele ucabange ukusetshenziswa okungokoqobo komhlaba jikelele:

Okokuqala:

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

Isixazululo 1:

--foo.h ngaphandle ex arr []; --foo.c # hlanganisa "foo.h" main void (int argc, char ** argv) {/ * Lokhu kusebenza kungenxa ye-win32 ne-cygwin; musa "ukwandisa" * / okungahambisani nendawo * parr = arr; phrinta ("% d \ n", parr [1]); }}

Isombululo 2:

- * Qaphela: ukuthumela okuzenzakalelayo kuthathwa (akukho __declspec (dllexport)) * / #if (ichazwe (_WIN32) || ichazwa (__ 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 # hlanganisa "foo.h" main main (int argc, char ** argv) {printf ("% d \ n", hlela [1]); }}

Indlela yesine yokugwema le nkinga ukuphinda uphinde ulayishe ilabhulali yakho ukusebenzisa isikhombimsebenzisi esisebenzayo kunokuba isikhombimsebenzisi sedatha yeziguquguquko ezonakele (isib. Set_foo () kanye nemisebenzi get_foo () yokufinyelela).

- ukungabonakali-ukungenisa okuzenzakalelayo

Ungazami ukwenza ukuxhuma okuxubile kwe "_symbol" ku- "__imp__symbol" ye-DATAimports evela kuma-DLL.

- ebonakalayo-egijimelayo-ehamba phambili

Uma ikhodi yakho iqukethe izinkulumo ezichazwe esigabeni esingenakwenzeka-sokungena ngemvume, okungukuthi, i-DATAimports evela ku-DLL ngokungenayo i-offset, lo mshini uzokhipha i-vector 'yokufuduka kokungena kwesikhathi sokugijima' okungasetshenziswa imvelo yokugijima ukulungisa izikhombo kudatha enjalo kumakhodi wakho wekhasimende.

- engaqondakali-isikhathi sokuqalisa-ukusetha kabusha

Ungadala ukuhanjiswa kwegama lokungeniswa kwezingeniso ze-DATA ezisuka ku-DLL. Lokhu okuzenzakalelayo.

- okungenakwenzeka-okungaphezulu kwe-debug

Bonisa imininingwane eyengeziwe yokulungisa iphutha ehlobene nokuthunyelwa kwe-symbol kokungena ngemvume.

- ukulungiswa kokusekela

Isetha ukulungiswa kwesigaba. Izingxenye ezikhunjulwayo zizoqala njalo kumakheli anenombolo yale namba. Ihlulekile ku-0x1000.

- gcina indawo yokugcina

- gcina indawo yokugcina , yenza

Cacisa inani lememori okufanele ligcinwe (futhi ngokuzikhethela lenze) ukuthi lisetshenziswe njenge-stack yalolu hlelo. Okuzenzakalelayo kungu-2Mb okugcinwe, 4K ozinikele.

--subsystem okuyinto

--subsystem okuyinto : enkulu

--subsystem okuyinto : enkulu . encane

Icacisa isistimu engaphansi kwalokhu uhlelo lwakho oluzokwenza. Amanani wezomthetho okuyiwona "owezizwe", "amawindi", "console", ne "posix". Ungakhetha ngokuzenzakalelayo ukubeka inguqulo ye-subsystem.

Okubalulekile: Sebenzisa umyalo womuntu ( % umuntu ) ukuze ubone ukuthi umyalo usetshenziswe kanjani kukhompyutha yakho ethile.