Linux / Unix Command: Id

NAME

ld - Kugwiritsa ntchito LD , GNU linker

SYNOPSIS

Ld [ zosankha ] zosiyana ...

DESCRIPTION

Ld imaphatikiza chiwerengero cha mafayilo ndi mafayilo , ndikusuntha deta yawo ndikumangiriza zizindikiro zamakono. Kawirikawiri gawo lomalizira polemba pulogalamu ndikuyendetsa ld .

Ld amalandira mafayilo a Linker Command Language olembedwa pamtundu waukulu wa syntax ya AT & T ya Link Editor Command Language, kuti apereke mphamvu yeniyeni yowunikira.

Tsamba la munthu uyu silikufotokoza chinenero cholamula; onani lolowera mu "info", kapena buku ld: GNU linker, kuti mudziwe zambiri pa chilankhulo cha malamulo komanso pazinthu zina zaGNU linker.

Ld iyi imagwiritsa ntchito makanema ambiri a BFD kuti agwire ntchito pa mafayilo. Izi zimapangitsa Ld kuwerengera, kuphatikiza, ndi kulemba mafayilo azinthu m'mafanizo osiyanasiyana. Mwachitsanzo, COFF kapena "a.out". Maonekedwe osiyana angagwirizanitsidwe palimodzi kuti apange mtundu uliwonse wa fayilo.

Kuwonjezera pa kusinthasintha kwake, GNU linker ndi yothandiza kwambiri kusiyana ndi zina zomwe zimagwirizanitsa popereka chidziwitso. Ambiri amalumikizana akusiya kuphedwa nthawi yomweyo pamene akukumana ndi vuto; Ngati n'kotheka, ld ikupitiriza kuchitapo kanthu, kukulolani kuti mudziwe zolakwa zina (kapena, nthawi zina, kuti mulandire fayilo ngakhale kuti mwalakwitsa).

GNU linker ld amatanthawuza kubisa zinthu zambiri, ndi kukhala ovomerezeka ndi othandizira ena. Chotsatira chake, muli ndi zisankho zambiri zowononga khalidwe lake.

OPTIONS

The linker imathandiza plethora ya mzere-mndandanda mndandanda , koma kwenikweni zochepa za izo ntchito iliyonse. Mwachitsanzo, kugwiritsa ntchito kawirikawiri ld ndiko kugwirizanitsa mafayilo ofunikira a Unix pamtundu wotsimikizika wa Unix . Pa dongosolo lotero, kulumikiza fayilo "hello.o":

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

Izi zimauza ld kuti apange fayilo yotchedwa zotsatira monga zotsatira zogwirizanitsa fayilo "/lib/crt0.o" ndi "hello.o" ndi laibulale ya "libc.a", yomwe idzachokera ku zolemba zowonjezera. (Onaninso zokambirana za_sankho pansipa.)

Zina mwazitsulo zowonjezera mzere ku ld zikhoza kufotokozedwa pa nthawi iliyonse mu mzere wa lamulo. Komabe, zosankha zomwe zikutanthawuza mafayilo, monga -l kapena -T , perekani fayilo kuti iwerengedwe pamtundu umene mungayang'anire mzere wotsatira, poyerekeza ndi mafayilo ndi zina zomwe mungasankhe. Kubwereza zosankhidwa zosasankhidwa ndi ndemanga yosiyana sikungakhale ndi zotsatira zina, kapena kupitirirapo zochitika zisanafike (zomwe zili kumanzere pa mzera wa lamulo) za njirayi. Zosankha zomwe zingatanthauzidwe mobwerezabwereza zoposa kamodzi zomwe zafotokozedwa m'munsimu.

Zosasankha zosankha ndizojambula kapena zolemba zomwe ziyenera kulumikizidwa palimodzi. Amatha kutsata, kutsogolo, kapena kusakanikirana ndi mayankho a mzere, kupatula kuti kukangana kwa fayilo sikungayikidwe pakati pa zomwe mungachite ndi ndemanga yake.

Kawirikawiri linker imayitanitsidwa ndi chinthu chimodzi chojambula, koma mukhoza kufotokozera mitundu ina ya mafayilo opangira ma binary pogwiritsa ntchito -l , -R , ndi chinenero cholembera. Ngati palibe ma fayilo olowera ma binary omwe adatchulidwa, linker siimapereka china chilichonse, ndipo imapereka uthenga Palibe mafayilo olowera .

Ngati linker sangathe kuzindikira mtundu wa fayilo, idzaganiza kuti ndi linker. Script yofotokozedwa mwanjirayi ikugwiritsira ntchito main link script yogwiritsidwa ntchito pazitsulo (kaya ndi default defaulter script kapena yomwe yanenedwa pogwiritsa ntchito -T ). Chizindikirochi chimalola kuti linker lizilumikizane ndi fayilo yomwe imawoneka ngati chinthu kapena zolemba, koma kwenikweni imangotanthauzira zizindikiro zina, kapena imagwiritsa ntchito "INPUT" kapena "GROUP" kutsegula zinthu zina. Onani kuti kufotokoza malemba mwa njirayi kungophatikizapo mfundo yaikulu; gwiritsani ntchito -T njira yoti muthe kusinthira script defaulter script kwathunthu.

Zosankha zomwe maina awo ndi kalata imodzi, zosankha zotsatila ziyenera kutsatila kalata yomwe mwasankha popanda kutseguka kwa whites, kapena kupatseni ngati zifukwa zosiyana potsatira chisankho chimene chimafuna.

Kwa zosankha zomwe maina ali malembo angapo, dash kapena awiri akhoza kutsogolera mayina; Mwachitsanzo, -chidule-chizindikiro ndi -trace-chizindikiro ndizofanana. Dziwani - pali zosiyana ndi lamulo ili. Zolemba zambirimbiri zomwe zimayambira ndi zochepetsera 'o' zingangotengedweratu ndi dashes awiri. Izi ndizothetsa chisokonezo ndi -o njira. Tsono Mwachitsanzo -omagic ikuika dzina la fayilo ku zamatsenga koma --omagic ikuyika mbendera ya NMAGIC pa zotsatira.

Zotsutsana ndi makalata angapo a ma kalata ayenera kukhala osiyana ndi dzina lachindunji ndi chizindikiro chofanana, kapena kuperekedwa ngati zifukwa zotsutsana mwamsanga pakusankha komwe kumafuna. Mwachitsanzo, - foo-symbol foo ndi --trace-chizindikiro = foo ndi ofanana. Zifanizo zapadera za maina a makalata angapo amalembedwa.

Zindikirani - ngati linker ikuyitanidwa mwachindunji, kupyolera mwa woyendetsa galimoto (mwachitsanzo gcc ) ndiye njira zonse zoyanjanitsira mzerewu ziyenera kutsatiridwa ndi -Wl, (kapena chirichonse chomwe chili choyenera kwa woyendetsa wapadera) monga chonchi:

gcc -Wl, - gulu loyamba foo.o bar.o -Wl, - gulu

Izi ndizofunikira, chifukwa apo ayi pulogalamu yoyendetsa galimotoyo ingachepetse mwachangu zosankha za linker, zomwe zimayambitsa kugwirizana.

Pano pali tebulo lamasinthiki amtundu watsopano omwe amavomereza ndi GNU linker:

-mutu wapadera

Njirayi imathandizidwa ndi HP / UX mogwirizana. Mtsutso wachinsinsi wamtundu uyenera kukhala chimodzi mwazinthu zakusungidwa , zomwe zagawidwa , kapena zosasintha . -kusewera kumagwira ntchito mofanana ndi -Bstatic , ndipo mawu ena awiriwo ndi ofanana ndi -Bdynamic . Njirayi ingagwiritsidwe ntchito nthawi iliyonse.

- Zojambula

--architecture = zomangamanga

Pakutulutsidwa kwatsopano kwa ld , njirayi ndi yothandiza kwa banja la Intel 960 la zomangamanga. Kukonzekera kwadongosolo , malingaliro a zomangamanga amadziwika bwino kwambiri ndi zomangamanga mu banja la 960, zomwe zimathandiza kuteteza ndi kusintha njira ya kufufuza laibulale.

Zotsatira zam'tsogolo zowonjezera ld zitha kuthandizira zofanana ndi mabanja ena.

-bwopangidwe kazotsatira

--format = zolembera-mawonekedwe

Ld ikhoza kukhazikitsidwa kuti zithandize zoposa mtundu umodzi wa fayilo. Ngati ld yanu ikukonzedwa mwanjira iyi, mungagwiritse ntchito -b kusankha kuti mufotokoze fayilo yophatikizapo pa mafayilo omwe akutsatira omwe akutsatira njirayi pa mzere wa lamulo. Ngakhale pamene ld yakhazikitsidwa kuti igwirizane ndi zinthu zina zopangidwa, simukusowa kufotokoza izi, monga momwe ziyenera kukhazikitsidwa kuti ziyembekezere ngati mawonekedwe osasinthika omwe amawonekera kwambiri pa makina onse. Mafomu a zolembera ndi chingwe chazithunzithunzi, dzina la mtundu wina wotchulidwa ndi makalata a BFD. (Mungathe kulemba mafomu omwe alipo omwe alipo ndi objdump -i .)

Mungagwiritse ntchito njirayi ngati mukugwirizanitsa mafayilo ndi mawonekedwe osasangalatsa omwe ali nawo. Mukhozanso kugwiritsa ntchito -b kusintha mawonekedwe momveka bwino (pogwirizanitsa mafayilo a mitundu yosiyanasiyana), kuphatikizapo -b kupangira -mawonekedwe pamaso gulu lirilonse la mafayilo mu mtundu wina.

Maonekedwe osasinthika amachokera ku "variable" GNUTARGET.

Mukhozanso kufotokozera zolembera zochokera ku script, pogwiritsa ntchito lamulo "TARGET";

-cc MRI-commandfile

--mri-script = MRI-malamulo

Pogwirizana ndi malumikizidwe a MRI, ld amavomereza malemba olembedwa m'chinenero china choletsedwa, chofotokozedwa mu MRI Compatible Script Files gawo la GNU ld zolemba. Tulutsani mafayilo a MRI pogwiritsa ntchito -c ; gwiritsani ntchito -T njira yothetsera zolemba zolembedwera m'chinenero cholembedwera. Ngati MRI-cmdfile palibe, ld amayang'ana izo muzolowera zofotokozedwa ndi -Zosankha .

-d

-dc

-dp

Zinthu zitatu izi ndizofanana; mitundu yambiri imathandizidwa kuti ikhale yogwirizana ndi zina zogwirizana. Amagawira malo kuti azisonyeza zizindikiro zofanana ngakhale ngati fayilo yotulutsidwayo imatchulidwa (ndi -r ). Lamulo la "FORCE_COMMON_ALLOCATION" liri ndi zotsatira zofanana.

-kulowa

--entry = kulowa

Gwiritsani ntchito chilolezo monga chizindikiro choyambirira choyambitsa ndondomeko yanu, m'malo moyikirapo. Ngati palibe chizindikiro chomwe chimatchedwa kulowa , linker amayesa kulemba monga chiwerengero, ndipo gwiritsani ntchito ngati aderesi yoyenera (nambalayo idzafotokozedwa mu maziko 10; mungagwiritse ntchito 0x otsogolera pa maziko 16, kapena kutsogolera 0 pa maziko 8).

-E

- kutulutsa-mphamvu

Pogwiritsa ntchito mphamvu yogwirizanitsa, yonjezerani zizindikiro zonse ku gome lamatsenga lamphamvu. Tebulo lamatsenga lamphamvu ndilo zizindikiro zomwe zimawonekera kuchokera ku zinthu zamphamvu pa nthawi yothamanga.

Ngati simugwiritsa ntchito njirayi, tebulo lachizindikiro lokha likhoza kukhala ndi zizindikiro zokhazo zomwe zikutchulidwa ndi chinthu china chotchulidwa muzitsulo.

Ngati mumagwiritsa ntchito "dlopen" kuti mutenge chinthu chofunikira chomwe chiyenera kubwereranso ku zizindikiro zomwe zimatchulidwa ndi pulogalamuyo, osati chinthu china cholimbika, ndiye kuti mukufunikira kugwiritsa ntchito njirayi pamene mukugwirizanitsa pulogalamuyo.

Mukhozanso kugwiritsa ntchito malembawo kuti muwone zizindikiro zomwe ziyenera kuwonjezeredwa pa tebulo lopangidwa ndi mafano ngati fomu yopereka ikuthandizira. Onani tsatanetsatane wa --verver-script mu @ ref {VERSION}.

-EB

Lumikizani zinthu big-endian. Izi zimakhudza kusinthika koyambira.

-EL

Gwirizanitsani zinthu zazing'ono-endian. Izi zimakhudza kusinthika koyambira.

-f

dzina lothandizira

Pogwiritsa ntchito ELF chinthu china, yikani munda wa DT_AUXILIARY mkati mwa dzina lodziwika. Izi zikuwuza kogwirizanitsa kamphamvu kuti tebulo lamagwiridwe la chinthu chogawidwa chiyenera kugwiritsidwa ntchito ngati fyuluta yothandizira pa tebulo lamakono la dzina lopatsana nawo.

Ngati mutagwirizanitsa pulogalamu yotsutsana ndi chinthu ichi, ndiye kuti mukamaliza pulogalamuyi, linkumikiza zowonongeka adzawona munda wa DT_AUXILIARY. Ngati linker yogwirizana ikukhazikitsa zizindikiro zilizonse kuchokera pa fyuluta, iyamba kuyang'ana ngati pali tanthauzo mu dzina lachinthu chodziwika. Ngati pali imodzi, idzagwiritsidwa ntchito mmalo mwa tanthauzo mu chinthu chosungiramo. Dzina lophatikizidwa lomwe silikuyenera kukhalapo. Potero dzina lophatikizidwa lomwe lingagwiritsidwe ntchito lingagwiritsidwe ntchito popereka njira zina zomwe zingagwiritsidwe ntchito, mwinamwake podutsa machitidwe kapena makina omwe amagwira ntchito.

Njira iyi ikhoza kutchulidwa kangapo. Zowonjezera DT_AUXILIARY zidzalengedwa mwadongosolo lomwe likuwonekera pa mzere wa lamulo.

-F dzina

- mafilimu

Pogwiritsa ntchito ELF gawo limodzi, yikani munda wa DT_FILTER mkati mwa dzina lodziwika. Izi zikuwuza kogwirizanitsa kamphamvu kuti tebulo lachizindikiro la chinthu chogawidwa chomwe chikugwiritsidwa ntchito chiyenera kugwiritsidwa ntchito monga fyuluta pa tebulo lamakono la dzina lodziwika nalo .

Ngati mutagwirizanitsa pulojekiti yotsutsana ndi chinthu ichi, ndiye kuti mukamaliza pulogalamuyi, linkumikizayi adzawona malo a DT_FILTER. Linker yolimba idzathetsa zizindikiro molingana ndi tebulo lamakono la fyuluta chinthu mwachizolowezi, koma ilo lidzagwirizana kwenikweni ndi matanthauzidwe omwe amapezeka mu dzina lachinthu chodziwika. Motero chinthu chophwanyika chingagwiritsidwe ntchito kusankha sewero la zizindikiro zoperekedwa ndi dzina lake .

Ogwirizanitsa ena okalamba anagwiritsa ntchito njira ya -F mkati mwazomwe amagwiritsira ntchito popanga chinthu choyenera-mafayilo mafayilo opangira ndi owonetsera. GNU linker amagwiritsa ntchito njira zina pazinthu izi: -b , --format , --form form , lamulo "TARGET" mu linker scripts, ndi variable "GNUTARGET" chilengedwe. GNU linker amanyalanyaza -F njirayi pamene sakupanga ELF chinthu china.

Dzina lachinayi

Polenga chinthu cha ELF chomwe chigawidwa kapena chogawanika, danani NAME pamene chinthu chochitidwa kapena chogawidwa chimasulidwa, poika DT_FINI ku adiresi ya ntchitoyi. Mwachikhazikitso, linker imagwiritsa ntchito "_fini" monga ntchito yoitanira.

-g

Ananyalanyaza. Zinapangidwa mogwirizana ndi zida zina.

-G value

--gpsize = mtengo

Ikani kukula kwakukulu kwa zinthu kuti zikhale bwino pogwiritsira ntchito GP zolembera kukula . Izi ndi zothandiza kwambiri pa mafayilo a fayilo monga MIPS ECOFF yomwe imathandizira kuyika zinthu zazikulu ndi zing'onozing'ono m'magulu osiyanasiyana. Izi zimanyalanyazidwa pazinthu zina za mafayilo.

-h dzina

-malo = dzina

Pogwiritsa ntchito ELF chogawana chinthu, ikani munda wa DT_SONAME mkati mwa dzina lodziwika. Pamene chinthu chophatikizidwa chikugwirizana ndi chinthu chogawidwa chomwe chili ndi DT_SONAME, ndiye pamene otsogolera akuyendetsa kogwirizanitsa kuyesa kuyendetsa chinthu chogawa chomwe chinanenedwa ndi DT_SONAME mmalo mogwiritsa ntchito dzina la fayilo loperekedwa kwa linker.

-i

Chitani chiyanjano chokwanira (chimodzimodzi monga kusankha -r ).

-ndi dzina

Polenga chinthu cha ELF chochita kapena chogawana nawo, itanani NAME pamene chinthu chophatikizidwa kapena chogawidwa chimasungidwa, poika DT_INIT ku adiresi ya ntchitoyi. Mwachikhazikitso, linker imagwiritsa ntchito "_init" monga ntchito yoitanira.

-l zolemba

--library = zolemba

Onjezani maofayilo a archive kusungira ku mndandanda wa mafayilo kuti agwirizane. Njirayi ingagwiritsidwe ntchito nthawi iliyonse. Ld idzasanthula mndandanda wa zochitika za "libarchive.a" pa zolemba zonse zomwe zafotokozedwa.

Pa machitidwe omwe amathandizira ma libraries ogawanika, ld akhozafunanso makalata omwe ali ndi zowonjezera osati ".a". Mwachindunji, pa machitidwe a ELF ndi SunOS, ld idzasaka bukhu la laibulale ndi kuwonjezera kwa ".so" musanafufuze limodzi ndi kuwonjezera kwa ".a". Pogwirizana, msonkhano wa ".so" ukuwonetsa laibulale yogawana.

The linker amasaka archive kamodzi kokha, pamalo pomwe izo zafotokozedwa pa mzere lamulo. Ngati archive imatanthawuza chizindikiro chomwe sichidziwika pa chinthu china chomwe chinawonekera patsogolo pa archive pa mzere wa lamulo, linker imaphatikizapo mafayilo oyenerera ku archive. Komabe, chizindikiro chosadziwika mu chinthu chikuwonekera pambuyo pa mzere wa lamulo sichidzachititsa kuti linker afufuze zolembazo.

Onani - ( njira yothetsera kukakamiza kuti mufufuze mayankho nthawi zambiri.

Mukhoza kulembetsa maofesi omwewo mobwerezabwereza pa mzere wa malamulo.

Mtundu uwu wamakafukufuku wamakalata ndi ofanana kwa Unix zolumikiza. Komabe, ngati mukugwiritsa ntchito ld onAIX, onani kuti ndi zosiyana ndi khalidwe la AIX kulumikiza.

-L fufuzani

--kulumikiza-njira = kufufuza

Onjezerani njira yofufuzira ku mndandanda wa mapepala omwe angayang'anire makalata osungira malemba ndi malemba olemba. Mukhoza kugwiritsa ntchito njirayi nthawi iliyonse. Mauthengawa amafufuzidwa mu dongosolo limene iwo adalongosola pa mzere wa lamulo. Zowonjezera zatchulidwa pa mzere wa lamulo zikufufuzidwa pamaso pa mauthenga osasinthika. Zonse -Zochita zimagwiritsidwa ntchito kwa onse -zimene mungasankhe, mosasamala kanthu momwe mungasankhire zosankhazo.

Ngati wofufuza ayamba ndi "=", ndiye "=" adzasinthidwa ndi chigawo cha sysroot , njira yomwe imayimilidwa pamene linker ikukonzedwa.

Kukhazikika kwa njira zomwe zasaka (osayankhulidwa ndi -L ) zimadalira mtundu womwe umagwiritsira ntchito, komanso nthawi zina momwe zinakhazikitsidwira.

Njirazi zingathenso kutchulidwa muzembina zotsatizana ndi lamulo la "SEARCH_DIR". Zowonjezera zanenedwa njirayi zimasanthula pa malo pomwe linker script ikuwonekera mu mzere wa lamulo.

-kuyimira

Tsatirani zoyimira linker. Mukhoza kulemba zomwe zilipo ndi zoyenera - zotsatila kapena -V .

Ngati -m kusankha sikunagwiritsidwe ntchito, kutengeka kumachokera ku "LDEMULATION" variable variable, ngati izo zikutanthauziridwa.

Apo ayi, kusungunuka kosasunthika kumadalira m'mene linkakonzera.

-M

- mapu ojambula

Sinthani mapu a malumikizidwe kuwonongeka koyenera. Mapu achitsulo amapereka zambiri zokhudza chiyanjano, kuphatikizapo zotsatirazi:

*

Kumene zinthu zojambula ndi zizindikiro zimapangidwira kukumbukira.

*

Zimayimira zizindikiro zofanana.

*

Mamembala onse osungirako zidawunikira, ndi kutchulidwa kwa chizindikiro chomwe chinapangitsa munthu wolemba mbiriyo kubweretsa.

-n

--nmagic

Chotsani kusankhana kwa magawo, ndipo lembani zotsatira ngati "NMAGIC" ngati n'kotheka.

-N

--omagic

Ikani zigawo ndi ma data kuti awerenge ndi kuzilemba. Ndiponso, musati muwonetsetse pa tsamba-kulumikiza gawo la deta, ndipo mulephere kulumikizana ndi makalata ogawana nawo. Ngati mtundu wopanga mawonekedwe umapereka manambala a matsenga a Unix, lembani zotsatira zake monga "OMAGIC".

- osamveka

Njira iyi silingathe zotsatira zambiri za_Nkhani . Imalemba gawo loti liwerengedwe-lokha, ndipo limapangitsa gawo la deta kukhala lofanana ndi tsamba. Dziwani - njira iyi siyikuthandizani kugwirizanitsa ndi makalata ogawana nawo. Gwiritsani ntchito -Bdynamic pa izi.

-kupanga

--output = zotsatira

Gwiritsani ntchito phindu monga dzina la pulogalamu yopangidwa ndi ld ; ngati chisankhochi sichinafotokozedwe, dzina a.out limagwiritsidwa ntchito posasintha. Lamulo lolemba "OUTPUT" lingathenso kutchula dzina la fayilo.

-O msinkhu

Ngati msinkhu uli ndi chiwerengero cha chiwerengero chachikulu kuposa zero ld ikuthandizira zotsatira. Izi zingatenge nthawi yayitali ndipo motero ziyenera kukhala zogwiritsidwa ntchito pazinthu zowonjezera.

-q

-mas-relocs

Chotsani zigawo zosamukira ndi zomwe zili muzowonjezera zonse. Kufufuza kwachinsinsi ndi zida zogwiritsira ntchito zingathe kufunikira chidziwitso ichi kuti zithetsedwe bwino. Izi zimabweretsa zotsatira zazikulu.

Njira iyi ikuthandizidwa pokhapokha pa mapulatifomu a ELF.

-r

- yosasinthika

Pangani zotsatira zochotsedweratu, mwachitsanzo, kupanga pulogalamu yotuluka yomwe ingakhale yopindulitsa ku ld . Izi nthawi zambiri zimatchedwa kusankhana . Monga zotsatira zoyipa, m'makonzedwe omwe amathandiza manambala amodzi a Unix zamatsenga, njirayi imayikiranso chiwerengero cha fayilo cha matsenga kuti "OMAGIC". Ngati chisankhochi sichinafotokozedwe, fayilo yeniyeni imapangidwa. Pamene akugwirizanitsa mapulogalamu a C ++, njirayi sichidzathetsa mafotokozedwe kwa omanga; kuti muchite zimenezo, gwiritsani ntchito -Ur .

Pamene fayilo yowonjezera ilibe mafananidwe ofanana ndi fayilo yotulutsira, kulumikizana kwa gawo kumathandizidwa pokhapokha ngati fayilo yophatikizirayi ilibe kusuntha kulikonse. Zosiyana zojambula zikhoza kukhala ndi malamulo ena; Mwachitsanzo, zina "a.out" -zipangidwe zozikidwa sizimathandiza pang'onopang'ono kugwirizanitsa ndi mafayilo olowera m'mafomu ena.

Njira iyi imagwira chinthu chimodzimodzi -i .

-R filename

- zozizwitsa = dzina lachifanizo

Pezani mayina a zizindikiro ndi maadiresi awo kuchokera ku filename , koma musasunthe kapena kuyikapo mu zotsatira. Izi zimapereka mafayilo anu owonetsera kuti afotokoze mwachidule kumalo omveka bwino a malingaliro omwe amamasuliridwa muzinthu zina. Mungagwiritse ntchito njirayi kangapo.

Pogwirizana ndi maulumikizano ena a ELF, ngati -A njirayi ikutsatiridwa ndi dzina lamasewero , osati dzina la fayilo, ilo limatengedwa ngati -rpath kusankha.

-s

- zonse

Tumizani zithunzithunzi zonse zophiphiritsira kuchokera pa fayilo yotulutsa.

-S

- tsambani-debug

Lembani zizindikiro za chizindikiro (koma osati zizindikiro zonse) kuchokera pa fayilo ya zotsatira.

-t

--trace

Sakani maina a mafayilo olowera monga momwe amawathandizira.

-Scriptcript

--script = scriptfile

Gwiritsani ntchito scriptfile ngati linker script. Script iyi imasintha ld 's default linker script (osati kuwonjezera pa izo), kotero maulamuliro ayenera kufotokoza zonse zofunika kuti afotokoze fayilo yotulutsa. Ngati scriptfile palibe pakalata yamakono, "ld" imayang'ana iyo muzolowera zomwe zafotokozedwa ndizomwe zilipo kale. Zambiri-Zosankha zimakanikira .

-chizindikiro

chiwonetsero = chizindikiro

Limbikitsani chizindikiro kuti chilowe mu fayilo yotulutsira ngati chizindikiro chosadziwika. Kuchita izi, mwachitsanzo, kungayambitse kulumikizana kwa ma modules owonjezera kuchokera m'mabuku ofesi. -inu mukhoza kubwereza ndi njira zosiyana zowonjezera kuti mulowe zizindikiro zina zosadziwika. Njira iyi ndi yofanana ndi lamulo la "EXTERN" linker script.

-Ur

Pazinthu zina zomwe sizinayambe pulogalamu ya C ++, njirayi ndi yofanana ndi -r : imapangitsa kuti phindu likhale lothandizira . Pamene mukugwirizanitsa mapulogalamu a C ++, -Ur amakonza zolembera kwa omanga, mosiyana -r . Izo sizigwira ntchito kuti zigwiritse ntchito - Ikani pa mafayilo omwe enieniwo okhudzana ndi -Ur ; pokhapokha tebulo la omanga lakonzedwa, sangathe kuwonjezeredwa. Gwiritsani ntchito -Kodi kokha ku mgwirizano wotsiriza wapadera, ndi - kwa ena.

--unique [= SECTION ]

Amapanga gawo losiyana la magawo omwe ali ndi gawo loyenderana ndi SECTION , kapena ngati mwatsatanetsatane mchigawo cha SECTION mulibe kusowa, pa gawo lililonse lothandizira amasiye. Gawo la ana amasiye liri limodzi lomwe silinatchulidwe mwachindunji mu linker link. Mungagwiritse ntchito njirayi kangapo pa mzere wa lamulo; Imalepheretsa kuyanjana kwachigawo cha zolembera ndi dzina lomwelo, kupitirira gawo la magawo omwe ali nawo mu linker script.

-v

--version

-V

Onetsani nambala yeniyeni ya ld . The -V chofunikiranso amalembetsa zovomerezeka.

-x

- osokoneza-zonse

Chotsani zizindikiro zonse zakunja.

-X

- adiscard-ammudzi

Chotsani zizindikiro zonse zapakatikati. Kwa zolinga zambiri, izi ndizo zizindikiro zam'deralo zomwe maina awo amayamba ndi L.

-chizindikiro

--trace-chizindikiro = chizindikiro

Lembani dzina la fayilo iliyonse yolumikizidwa yomwe chizindikiro chikuwonekera. Njirayi ingaperekedwe nthawi iliyonse. Pa machitidwe ambiri ndikofunikira kuimirira.

Njirayi ndi yopindulitsa mukakhala ndi chizindikiro chosadziwika muzitsulo zanu koma simukudziwa kumene akuchokera.

-Njira

Onjezani njira yopita kumalo osakasaka a laibulale. Njirayi ilipo ndi mgwirizano wa Solaris.

-z mawu ofunika

Mawu ofunika omwe amadziwika ndi "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "tsopano", "chiyambi", "combreloc", "nocombreloc" ndi "nocopyreloc ". Malembo ena amanyalanyazidwa ndi Solaris. "initfirst" amasonyeza chinthu choyenera kuyambitsidwa poyamba pa nthawi yothamanga patsogolo pa zinthu zina. "kutanthawuza" kumatanthawuza chinthu chomwe tebulo lake lophiphiritsira limaloƔera pamaso pa zizindikiro zonse koma choyambirira chikutheka. "loadfltr" imatanthawuza chinthu chomwe mafayilo ake akutsatidwa mwamsanga pa nthawi yothamanga. "nodefaultlib" amasonyeza chinthu chimene kufufuza zokhudzana ndi chinthu ichi chidzanyalanyaza njira iliyonse yosaka laibulale. "nodelete" amasonyeza chinthucho sayenera kutulutsidwa pa nthawi yothamanga. "nodlopen" imatanthawuza chinthu chomwe sichipezeka kuti "chitha". "nodump" imasonyeza chinthu chomwe sichikhoza kutayidwa ndi "dldump". "tsopano" imatanthawuza chinthucho ndi nthawi yosamalidwa yothamanga. "chiyambi" chimasonyeza chinthu chomwe chingakhale ndi $ ORIGIN. "kutanthauzira" sikulepheretsa zizindikiro zosadziwika. "muldefs" imalola matanthauzo osiyanasiyana. "combreloc" imagwirizanitsa magawo ambiri omwe amawongolera ndikupanga mawonekedwe awo kuti apange chizindikiro chodziwika bwino chotsekerera.

"nocombreloc" imasokoneza magawo ambiri osamukira. "nocopyreloc" imalepheretsa kupanga zojambulazo.

- ( zolemba -)

Gulu - gulu la magulu - gulu lopangira

Zosungiramo ziyenera kukhala mndandanda wa mafayilo a archive . Zikhoza kukhala maina a mafayilo odziwika bwino, kapena -sankho .

Maofesi omwe adatchulidwawa amafufuzidwa mobwerezabwereza mpaka palibe maumboni atsopano omwe sakudziwika. Kawirikawiri, malo osungiramo zofufuzira amafufuzidwa kamodzi kokha pokhapokha ngati atchulidwa pa mzere wa lamulo. Ngati chizindikiro mu archiveyi chikufunika kuthetsa chizindikiro chosadziwika chomwe chimatchulidwa ndi chinthu chomwe chili mu archive yomwe ikuwonekera mtsogolo pa mzere wa lamulo, linker sangathe kuthetsa malondawa. Mwa kugawana maofesi, onse amafufuzidwa mobwerezabwereza mpaka zolemba zonse zomwe zitha kuthetsedwa.

Kugwiritsa ntchito njirayi kuli ndi mtengo wapatali wothandizira. Ndibwino kuigwiritsa ntchito pokhapokha pali zizindikiro zosawoneka zomwe zilipo pakati pa zolemba ziwiri kapena zambiri.

- kulandila-osadziwika-kulowetsa-arch

- osati-kulandira-osadziwika-kulowetsa-chithunzi

Amauza linker kuti avomere mafayilo olowera omwe maluso sangathe kudziwika. Lingaliro ndilo kuti wosuta amadziwa zomwe akuchita ndipo mwadala amafuna kulumikizana ndi mafayilo osalandikira awa. Ichi chinali khalidwe losasintha la linker, musanamasulidwe 2.14. Khalidwe losasintha kuchokera ku kumasulidwa 2.14 kupita patsogolo ndiko kukana mafayilo olowerawo , kotero kuti_kulandila-osadziwika-kulowetsa- chotsatira chawonjezeredwa kuti abwezeretse khalidwe lakale.

-tsani mawu ofunika

Njirayi imanyalanyazidwa chifukwa cha kugwirizana kwa SunOS .

-Bdynamic

-dy

-kukhala_kukhalapo

Lumikizanani motsutsana ndi makanema amphamvu. Izi ndi zothandiza kwambiri pamapulatifomu omwe amagawira makalata omwe amagawidwa nawo . Njirayi ndi nthawi yosasinthika pamapangidwe amenewa. Zosiyana za njirayi ndizogwirizana ndi machitidwe osiyanasiyana. Mungagwiritse ntchito njirayi maulendo angapo pa mzere wa lamulo: zimakhudza laibulale kufunafuna -zosankha zomwe zimatsatira.

-Gulu

Ikani chizindikiro "DF_1_GROUP" muzowonjezera "DT_FLAGS_1" mu gawo lamphamvu. Izi zimayambitsa kugwiritsira ntchito nthawi yogwiritsira ntchito kuthana ndi zofunikira pa chinthu ichi ndi zodalira zake kuti zichitidwe mkati mwa gululo. - osadziƔika bwino akutanthauza. Njirayi ndi yothandiza pa mapepala a ELF omwe amathandizira makalata ogawana nawo .

-Sinthika

-dn

-n'n_nye

-static

Musagwirizane ndi malaibulale amagawana. Izi ndi zothandiza kwambiri pamapulatifomu omwe amagawira makalata omwe amagawidwa nawo. Zosiyana za njirayi ndizogwirizana ndi machitidwe osiyanasiyana. Mungagwiritse ntchito njirayi maulendo angapo pa mzere wa lamulo: zimakhudza laibulale kufunafuna -zosankha zomwe zimatsatira.

-Achimbo

Pogwiritsa ntchito laibulale yamagulu, limbani maumboni ku zizindikiro zapadziko lonse ku tanthauzo mkati mwa laibulale yamagulu, ngati zilipo. Kawirikawiri, n'zotheka pulogalamu yotsutsana ndi laibulale yogawidwa kuti iwononge tsatanetsatane mkati mwaibulale yamagawo. Njirayi ndi yothandiza pa ELFplatforms yomwe imathandizira makalata ogawana nawo.

- zigawo zocheka

- zowunika-zigawo

Akufunsani kulumikiza kuti asayang'ane maadiresi apambuyo atapatsidwa ntchito kuti awone ngati pali zowonjezera. Kawirikawiri linker adzachita cheke ichi, ndipo ngati chipeza chilichonse chokwanira chidzabweretsa mauthenga olakwika. The linker amadziwa, ndipo amalola magawo mu nsalu. Makhalidwe osayenerera akhoza kubwezeretsedwa pogwiritsira ntchito mzere wosinthira mzere - zigawo zosachepera .

--cref

Kulemba tebulo lapamtanda. Ngati fayilo ya mapu a linker ikupangidwira, tebulo lamtunduwu lidasindikizidwa pa mapu. Apo ayi, iyo imasindikizidwa pamtundu woyenera.

Maonekedwe a tebulo ndi osavuta kumva, kuti athe kusinthidwa mosavuta ndi script ngati kuli kofunikira. Zisonyezo zimasindikizidwa, zosankhidwa ndi dzina. Kwa chizindikiro chirichonse, mndandanda wa maina a fayilo waperekedwa. Ngati chizindikiro chimatanthauzidwa, fayilo yoyamba yomwe ilipo ndi malo a tanthauzo. Zotsalira zomwe zilipo zili ndi zolemba za chizindikiro.

- osadziwika-wamba

Njirayi imaletsa kugawa maadiresi ku zizindikiro zofanana. Lamulo la "INHIBIT_COMMON_ALLOCATION" liri ndi zotsatira zofanana.

Njira yosadziwika-yodziwika imapangitsa kuti awononge chisankho chogawira maadiresi ku Zisonyezo Zachiyanjano kuchokera ku kusankha kwa mtundu wa fayilo; mwinamwake kusagwiritsiridwa ntchito kosasinthika mtundu wa mphamvu zomwe zimapereka maadiresi amachezera ku Zisonyezo Zowoneka. Kugwiritsira ntchito - si-define-wamba kumapatsa zizindikiro zofanana zomwe zimatchulidwa ku laibulale yoyanjana kuti ikhale maadiresi okha pulogalamu yayikulu. Izi zimathetsa malo osagwiritsidwa ntchito osungiramo mabuku, ndipo zimalepheretsa chisokonezo chilichonse chothetsera kuthetsa zolakwika ngati pali ma modules ambiri omwe ali ndi njira zofufuzira zosankhidwa.

- chizindikiro chachifi = chiwonetsero

Pangani chizindikiro cha padziko lonse mu fayilo yotulutsidwa, yomwe ili ndi adiresi yoyenera yoperekedwa pofotokozera . Mungagwiritse ntchito njirayi nthawi zambiri ngati mukufunikira kufotokoza zizindikiro zambiri mumzere wotsogolera. Chiwerengero chochepa cha masamu chikuthandizidwa pa mawu awa: Mungapereke nthawi yeniyeni kapena dzina la chizindikiro chomwe chilipo, kapena "+" ndi "-" kuwonjezera kapena kuchotsa makina a hexadecimal kapena zizindikiro. Ngati mukufuna zina zowonjezereka, ganizirani kugwiritsa ntchito chinenero cha commander kuchokera pa script. Dziwani: payenera kukhala malo oyera pakati pa chizindikiro , chizindikiro chofanana (`` `''), ndi mawu .

--demangle [= kalembedwe ]

- osadandaula

Zosankhazi zingasinthe kapena kutaya maina a chizindikiro m'mauthenga olakwika ndi zina zotuluka. Pamene linker ikuuzidwa kuti iwonongeke, imayesa kufotokoza mayina ophiphiritsira m'njira yoyenerera: imapangitsa kutsogolera kutsogolo ngati ikugwiritsidwa ntchito ndi fayilo ya fayilo, ndipo imatembenuza maina a chizindikiro a C ++ kuti akhale mayina owerengeka. Zolemba zosiyana zimakhala ndi mitundu yosiyanasiyana ya mangling. Zokambirana zowonongeka zosankhidwazo zingagwiritsidwe ntchito posankha ndondomeko yoyenerera kwadongosolo lanu. The linker idzasokoneza mwachisawawa pokhapokha chilengedwe chosinthika COLLECT_NO_DEMANGLE wasankhidwa . Zosankhazi zingagwiritsidwe ntchito kupititsa zosasintha.

fayilo yowonjezera

Tchulani dzina lothandizira kwambiri. Izi ndizothandiza kwambiri pamene akupanga machitidwe okhwima a ELF omwe akugwirizana. Chosavuta chogwirizanitsa ndichinthu cholondola; Musagwiritse ntchito izi pokhapokha mutadziwa zomwe mukuchita.

- adabwerera-kumalo

Njirayi ndi yothandiza kwambiri pamene ikugwirizanitsa ma code a PIC omwe ali ndi PIC, opangidwa ndi -sembedded-pic kusankha kwa GNU compiler ndi assembler. Zimayambitsa linker kuti apange tebulo yomwe ingagwiritsidwe ntchito pa nthawi yothamanga kuti ikasunthidwe deta iliyonse yomwe inayambitsidwa poyang'ana poyambira. Onani code mu testuite / ld-empic kuti mudziwe zambiri.

- machenjezo othandizira

Chitani machenjezo onse ngati zolakwika .

--force-exe-suffix

Onetsetsani kuti fayilo yotulutsira ili ndi suffix .exe.

Ngati malo omanga bwino okhudzana ndi fayilo okhudzidwa bwino alibe " exe " kapena " .dll " chokwanira, njirayi imayikitsa linker kuti ikope fayilo yotulutsira ku dzina limodzi ndi ".exe" suffix. Njirayi imagwiritsidwa ntchito pogwiritsa ntchito maofesi a Unix osasinthidwa pa maofesi a Microsoft Windows, popeza mawindo ena a Windows sangayendetse chithunzi pokhapokha atatha "suffix".

--no-gc-zigawo

- zigawo

Thandizani kusonkhanitsa zinyalala za magawo osaloledwa osagwiritsidwa ntchito. Zimatsatiridwa pazifukwa zomwe sizikugwirizana ndi njirayi. Njira iyi siyigwirizana ndi -r , komanso iyenera kugwiritsidwa ntchito ndi kugwirizanitsa kwakukulu. Makhalidwe osasintha (osagwira ntchito yosonkhanitsa zinyalala ) akhoza kubwezeretsedwa mwa kuwonetsera - osati-gc-zigawo pa mzere wa lamulo.

--Thandizeni

Sindikizani mwachidule zolemba zamtundu wam'manja pamtundu woyenerera ndi kutuluka.

--target-thandizo

Sindikizani mwachidule zomwe mungasankhe pazomwe mukufuna kuchita potsata ndondomeko yanu komanso kutuluka.

-Map mapfile

Sinthani mapu a mapu ku mapepala a mapepala . Onani tsatanetsatane wa -M-Options , pamwambapa.

- osasunga-kukumbukira

ld kawirikawiri imakonza mofulumira pamagwiritsidwe ntchito kukumbukira mwa kusindikiza ma tebulo ophiphiritsira maofesi olowera kukumbukira. Njirayi imalimbikitsa ld m'malo mwake kukonzekera kugwiritsa ntchito kukumbukira, powerenganso matebulo ophiphiritsa ngati n'kofunikira. Izi zingafunike ngati ld ikutuluka pakumbukira malo pomwe ikugwirizanitsa lalikulu lalikulu.

- osadziwika

-z akulephera

Kawirikawiri pamene amapanga laibulale yosagwiritsidwa ntchito yophiphiritsa, zizindikiro zosadziwika zimaloledwa ndipo zimasiyidwa kuti zithetsedwe ndi katundu wothamanga. Zosankhazi siziloleza zizindikiro zosadziwika.

- kutanthauzira-kutanthauzira kwambiri

-z muldefs

Kawirikawiri pamene chizindikiro chimatchulidwa kangapo, linker idzanena zolakwika zolakwika. Zosankha izi zilolere kutanthauzira kwambiri ndi tanthauzo loyamba lidzagwiritsidwe ntchito.

--allow-shlib-osanenedwa

Lolani zizindikiro zosadziwika muzogawidwa nawo pokhapokha ngati_zosadziwika zakhazikitsidwa. Zotsatira za ukonde zidzakhala kuti zizindikiro zosadziwika mu zinthu zamtundu uliwonse zidzapangabe zolakwitsa, koma zizindikiro zosadziwika muzogawidwa zidzanyalanyazidwa. Kukhazikitsidwa kwa_kusafotokozedwe kumapanga lingaliro kuti runtime linker idzagwedeza zizindikiro zosadziwika. Komabe pali njira imodzi (BeOS) yomwe zizindikiro zosayenerera m'mabuku ogawana nawo ndizochilendo chifukwa kernel imawagwiritsira nthawi pa nthawi yochuluka kuti asankhe ntchito yomwe ili yoyenera pa zomangidwe zamakono. IE ikulingalira bwino kusankha memset function. Zikuwoneka kuti ndi zachilendo kwa makampani a HPPA omwe ali nawo makalata kuti asakhale ndi zizindikiro zosadziwika.

- osadziwikiratu

Kawirikawiri pamene chizindikiro chiri ndi mawonekedwe osadziwika, the linker amanyalanyaza izo. Njira iyi imaloleza zizindikiro ndi malemba osadziwika ndipo zolakwika zowonongeka zidzatulutsidwa mmalo mwake.

- osachenjeza-osamvetsetsa

Kawirikawiri ld idzakupatsani cholakwika ngati mutayesera kugwirizanitsa mafayilo olowera omwe sakugwirizana nawo, mwina chifukwa chakuti athandizidwa kwa ojambula osiyana kapena osiyana siyana. Njirayi imauza ld kuti iyenera kuleka zolakwitsa zoterozo mwakachetechete. Njirayi iyenera kugwiritsidwa ntchito mosamala, panthawi yomwe mwachita chinthu chapadera chomwe chikuonetsetsa kuti zolakwikazo sizigwirizana.

- zonse-archive

Chotsani zotsatira za chotsatira- chotsatira cha archive kwa mafayilo otsatira a archive.

--sainhibit-exec

Gwiritsani ntchito fayilo yotulutsira fayilo nthawi iliyonse ikadali yogwiritsidwa ntchito. Kawirikawiri, linker sichidzabweretsa fayilo yotuluka ngati ikukumana ndi zolakwika panthawi yogwirizana; imachoka popanda kulemba fayilo yomwe imatulutsa pamene imatulutsa zolakwika zilizonse.

-nostdlib

Zotsatira zamakalata zosungirako zokha zowunikira pa mzere wa lamulo. Maofesi a Library omwe amalembedwa m'makalata ophatikiza (kuphatikizapo malemba omwe amatsindikidwa pa mzera wa lamulo) amanyalanyazidwa.

--oformat chilolezo-mawonekedwe

Ld ikhoza kukhazikitsidwa kuti zithandize zoposa mtundu umodzi wa fayilo. Ngati ld yanu ikukonzedwa mwanjira iyi, mungagwiritse ntchito -ofomati yanuyo kuti mufotokoze fayilo yachitsulo kwa fayilo ya fayilo. Ngakhale pamene ld yakhazikitsidwa kuti igwirizane ndi zinthu zina zopangidwa ndi zinthu, nthawi zambiri simukuyenera kufotokoza izi, pamene ld iyenera kukhazikitsidwa kuti ikhale yosasinthidwa kupanga fomu yomwe imakhala yosinthika pa makina onse. Zolemba-zofalitsa ndizolemba chithunzi, dzina la mtundu wina wotchulidwa ndi makalata a BFD. (Mungathe kulembetsa machitidwe omwe alipo omwe alipo ndi objdump -i .) Lamulo la "OUTPUT_FORMAT" lingathenso kutanthauzira mtundu wopangidwa, koma njirayi ikuposa.

-qmagic

Njirayi imanyalanyazidwa chifukwa cha kuyanjana kwa Linux.

-Ye

Njirayi imanyalanyazidwa ndi SVR4 mogwirizana.

--Khazikani mtima pansi

Chosankha ndi zotsatira za makina. Njirayi imangogwiritsidwa ntchito pazifukwa zingapo.

Pa mapulatifomu ena, chisankho chokhazikikacho chimapangitsa kuti zinthu zonse zikhale zotheka pamene amalumikizi amatha kukambirana nawo pulogalamuyi, monga kumasula maulendo adiresi komanso kupanga mauthenga atsopano pa fayilo.

Pa mapulatifomu maulumikizi othandizira nthawi zonse angapangitse kusokoneza kwapadera kwa zotsatirazi zosatheka. Izi zimadziwika kuti ndizochitika kwa Matsushita MN10200 ndi MN10300 banja la opanga mapulogalamu.

Pamapulatifomu kumene izi sizinathandizidwenso, - kulekerera kumalandiridwa , koma kumanyalanyazidwa.

- zizindikiro-fayilo fayile

Sungani zizindikiro zomwe zili mu fayilo filename , kutaya ena onse. filename ndi fayilo yapansi, ndi dzina limodzi la chizindikiro pa mzere. Njirayi ndi yothandiza kwambiri m'madera (monga VxWorks) kumene gome lalikulu laphiphiritsira limasonkhanitsidwa pang'onopang'ono, kuti likhale ndi nthawi yosunga nthawi.

- zizindikiro-fayilo sizimataya zizindikiro zosadziwika, kapena zizindikiro zofunikira kuti zisamuke.

Mukhoza kungotchula-zowonjezera-zizindikiro-fayilo kamodzi mu mzere wa lamulo. Ikuposa -s ndi -S .

-rpath dir

Onjezani mndandanda ku njira yopitilira kufufuza laibulale. Izi zimagwiritsidwa ntchito pogwirizanitsa ndi ELF zomwe zingagwirizane ndi zinthu zomwe zagawidwa. Zonse - zotsutsana zapirati zimatsindikizidwa ndipo zimaperekedwa ku runtime linker, zomwe zimagwiritsa ntchito kuti zipeze zinthu zogawana pa nthawi yothamanga. Chinthu cha -chapati chimagwiritsidwanso ntchito popeza zinthu zomwe zagawidwa zomwe zimafunikira ndi zinthu zomwe zagawidwa zomwe zikuphatikizidwa muzitsulo; onani ndondomeko ya -rpath-link njira. Ngati -rpath sichitha kugwiritsidwa ntchito polumikizana ndi ELF yomwe iweruzidwa, zomwe zili m'zinthu zachilengedwe "LD_RUN_PATH" zidzagwiritsidwa ntchito ngati zifotokozedwa.

Chinthu cha -chapati chingagwiritsidwe ntchito pa SunOS. Mwachisawawa, pa SunOS, linker idzapanga patch yofufuza nthawi yonse -Zopatsa mwayi. Ngati njira ya -rpath ikugwiritsidwa ntchito, njira yowunikira nthawi yothamanga idzapangidwira pokhapokha panagwiritse ntchito -pp options, ponyalanyaza -Z njira. Izi zingakhale zothandiza mukamagwiritsa ntchito gcc, zomwe zimapanga zambiri -Zzosankha zomwe zingakhale zowonongeka paNFS.

Pogwirizana ndi maulumikizano ena a ELF, ngati -A njirayi ikutsatiridwa ndi dzina lamasewero , osati dzina la fayilo, ilo limatengedwa ngati -rpath kusankha.

-rpath-link DIR

Pogwiritsa ntchito ELF kapena SunOS, imodzi yogawira laibulale ingafunike wina. Izi zimachitika pamene mgwirizano wa "ld -redred" umaphatikizapo laibulale yogawana ngati imodzi mwa mafayilo olowera.

Pamene linker amakumana ndi kudalira kotere pamene akugawidwa, osagwiritsiranso ntchito, akhoza kuyesa kupeza laibulale yomwe ikufunidwa ndikuiika mu chiyanjano, ngati sichiphatikizidwa momveka bwino. Zikatero, a -rpath-link njira imatchula seti yoyamba ya mauthenga kuti mufufuze. Njira ya -rpath-link ingatanthauzire motsatira maina a mayina mwina poyang'ana mndandanda wa mayina olekanitsidwa ndi colons, kapena pakuwoneka kangapo.

Njirayi iyenera kugwiritsidwa ntchito mosamala pamene ikuposa njira yofufuzira imene mwina yakhala yovuta kuti ikhale mulaibulale yogawana. Zoterezi ndizotheka kugwiritsa ntchito njira yofufuzira yosazindikira mwachangu kusiyana ndi nthawi yogwiritsira ntchito yothamanga.

The linker amagwiritsa ntchito njira zotsatirazi zofufuzira kuti apeze makalata oyenera omwe ali nawo.

1.

Zolemba zilizonse zofotokozedwa ndi -rpath-link zosankha.

2.

Zolemba zilizonse zomwe zafotokozedwa ndi - njira zamkati . Kusiyanitsa pakati pa -rpath ndi -rpath-link ndizolemba zomwe zafotokozedwa ndi - njira zosankhidwa zimaphatikizidwira muzomwe zimagwiritsidwa ntchito ndi kugwiritsidwa ntchito pa nthawi yothamanga, pamene njira -rpath-link ikugwira ntchito pa nthawi yogwirizana. Ndi kwa chiyanjano chokha.

3.

Pa njira ya ELF, ngati -rpath ndi "rpath-link" sizinagwiritsidwe ntchito, fufuzani zomwe zili muzomwe zimasinthidwa "LD_RUN_PATH". Ndi kwa chiyanjano chokha.

4.

Pa SunOS, ngati -pirati yosagwiritsidwa ntchito, fufuzani maulendo aliwonse omwe mwasankha pogwiritsa ntchito -L njira.

5.

Kwa chibadwidwe cha mbadwa, zomwe zili muzamasamba zosinthika "LD_LIBRARY_PATH".

6.

Kwa nthano ELF yolumikizana, mauthenga a "DT_RUNPATH" kapena "DT_RPATH" a laibulale yogawidwa amafufuzidwa ndi makalata omwe anagawidwa nawo. Zowonjezera "DT_RPATH" zimanyalanyazidwa ngati zolembera "DT_RUNPATH" zilipo.

7.

Mauthenga osasinthika, kawirikawiri / lib ndi / usr / lib .

8.

Kwa nthano yolumikiza pa ELF dongosolo, ngati fayilo /etc/ld.so.conf ilipo, mndandanda wa mauthenga opezeka mu fayilo.

Ngati bukhu lofunikila lomwe likufunidwa silipezeka, linker idzapereka chenjezo ndikupitiriza ndi chiyanjano.

-wagwirizanitsa

-Zopindulitsa

Pangani laibulale yamagawo. Izi pakali pano zimathandizidwa pa ELF, XCOFF ndi SunOS nsanja. Patsiku la SunOS, linker idzapanganso kabuku kogwiritsidwa ntchito ngati -zosankha sikunagwiritsidwe ntchito ndipo pali zizindikiro zosadziwika.

- wamba wamba

Njirayi imayankhula ld kuti iwonetse zizindikiro zomwe zimagwiritsidwa ntchito poyerekeza ndi zigawo zomwe zimagwiritsidwa ntchito. Choyamba mubwere zizindikiro zonse za byte, ndiye zonse ziwiri, byte zinayi, ndi china chirichonse. Izi ndikuteteza mipata pakati pa zizindikiro chifukwa cha zovuta.

--wonetsani-fayela [ kukula ]

Zofanana ndi -kutulutsika- koma -kubweretsa kachigawo kakang'ono ka gawo la fayilo iliyonse yolembera pamene kukula kwafikira. kukula kukufa kwa kukula kwa 1 ngati sikunaperekedwe.

- tsitsirani-kubwereza [ chiwerengero ]

Akuyesera kuti apange zigawo zowonjezera mu fayilo yotulutsira kuti pasapezeke gawo limodzi lopangidwa mu fayilo liri ndi zambiri kuposa kusamukira kuwerengetsera . Izi ndizothandiza popanga mafayilo akuluakulu othandizira kuti muzitsatira nthawi yeniyeni yamakono ndi fayilo ya fayilo yojambula; popeza COFFyi ikuimira kudutsa kwa 65535 gawo limodzi. Dziwani kuti izi zidzalephera kugwira ntchito ndi mafayilo opangidwa ndi mafayilo omwe sagwirizane ndi zigawo zosamveka. The linker sizingagawanitse magawo omwe amaphatikizidwa kugawidwa, choncho ngati gawo limodzi lolowetsamo liri ndi zochuluka kuposa kuwerengera kusuntha komwe gawo limodzi lidzakhale ndi malo ambiri osamukira. chiwerengero chosasinthika ku mtengo wa 32768.

--masitomala

Konzani ndi kuwonetsa ziwerengero za ntchito ya linker, monga nthawi yoperekera ndi kugwiritsa ntchito kukumbukira.

- maulendo apamwamba

Zolinga zina, zotsatira za ld n'zosiyana m'njira zina kuchokera ku chiyankhulo cha ena omwe alipo. Kusinthana uku kumapempha ld kuti agwiritse ntchito miyambo yachikhalidwe m'malo mwake.

Mwachitsanzo, pa SunOS, ld imaphatikizapo zolembedwera mu tebulo lachingwe. Izi zikhoza kuchepetsa kukula kwa fayilo yotulutsira ndi chidziwitso chokwanira chodziwika ndi 30 peresenti. Mwamwayi, pulogalamu ya SunOS "dbx" sitingathe kuwerenga pulogalamuyi ("gdb" alibe vuto). Mndandanda wa_kusintha kwawonekedwe ukuwuza ld kuti usaphatikize zolembedwamo.

- -section-start sectionname = org

Pezani chigawo mu fayilo yotulutsira pa adiresi yamtundu uliwonse. Mungagwiritse ntchito njirayi nthawi zambiri pakufunika kupeza magawo ambiri mu mzere wa lamulo. org ayenera kukhala intela imodzi yokha ya hexadecimal; chifukwa chogwirizana ndi zowonjezereka, mukhoza kusiya 0x yotsogoleredwa kawirikawiri yogwirizanitsa ndi chikhalidwe cha hexadecimal. Dziwani: sipangakhale malo oyera pakati pa dzinaname , chizindikiro chofanana (`` = ''), ndi org .

-Tbss kapenag

-Tdata org

-maganizo oyenera

Gwiritsani ntchito org monga adiresi yoyamba kwa --- mwachindunji - "bss", "data", kapena gawo la "malemba" la fayilo yotuluka. org ayenera kukhala intela imodzi yokha ya hexadecimal; chifukwa chogwirizana ndi zowonjezereka, mukhoza kusiya 0x yotsogoleredwa kawirikawiri yogwirizanitsa ndi chikhalidwe cha hexadecimal.

--dll-verbose

- kutsegula

Onetsani nambala yowonjezera kwa ld ndipo lembani mndandanda wa linker womwe umathandizidwa. Onetsani mafayilo olowera omwe angathe ndipo sangathe kutsegulidwa. Onetsani script linker yogwiritsidwa ntchito ndi linker.

--version-script = version-scriptfile

Tchulani dzina la sewero lapadera ku linker. Izi zimagwiritsidwa ntchito popanga makanema omwe akugawidwa kuti afotokoze zambiri zowonjezera malemba omwe amapezeka palaibulaleyi. Njirayi ndi yothandiza pa mapepala a ELF omwe amathandizira makalata ogawana nawo.

- dziwani-wamba

Chenjezani pamene chizindikiro chofanana chikuphatikizidwa ndi chizindikiro chofanana kapena ndi tanthauzo la chizindikiro. Unix imagwirizanitsa kuti izi zitheke, koma kugwirizanitsa pazinthu zina zogwiritsira ntchito sizimatero. Njirayi ikukuthandizani kuti mupeze mavuto omwe mungakhale nawo pophatikiza zizindikiro zapadziko lonse. Mwamwayi, magalasi ena C amagwiritsira ntchito izi, kotero mukhoza kupeza machenjezo okhudza zizindikiro m'malaibulale komanso mu mapulogalamu anu.

Pali mitundu itatu ya zizindikiro za padziko lonse, zomwe zikuwonetsedwa apa ndi zitsanzo za C:

int i = 1;

Tsatanetsatane, yomwe ikupita mu gawo la deta loyamba la fayilo yotulutsa.

extern int i;

Ndemanga yosadziwika, yomwe siidapatse malo. Payenera kukhala pali tanthawuzo kapena chizindikiro chodziwika kwa osinthika penapake.

int i;

Chizindikiro chofala. Ngati pali zizindikiro zofanana (chimodzi kapena zingapo) zomwe zimagwiritsidwa ntchito zosiyana, zimapita kudera losawerengeka la fayilo. The linker ikuphatikizapo zizindikiro zambiri wamba kuti kusintha chimodzi mu chizindikiro chimodzi. Ngati iwo ali osiyana siyana, iwo amatha kukula kwakukulu. The linker imatembenuza chizindikiro chofanana kukhala chidziwitso, ngati pali tanthauzo la zofanana zofanana.

Njira yowonjezera-yowonjezera ikhoza kupanga mitundu isanu ya machenjezo. Chenjezo lirilonse liri ndi mizere iwiri: yoyamba imalongosola chizindikiro chomwe chakumana nacho, ndipo chachiwiri chimalongosola chizindikiro choyambirira chomwe chinakumana ndi dzina lomwelo. Chizindikiro chimodzi kapena zonse ziwiri zidzakhala chizindikiro chofala.

1.

Kutembenuzira chizindikiro chofanana mukutanthauzira, chifukwa pali kale tanthauzo la chizindikiro.

(): chenjezo: wamba wa < 'wododometsedwa ndi tanthauzo (): chenjezo: lofotokozedwa apa

2.

Kutembenuzira chizindikiro chofanana ndikutanthauzira, chifukwa tanthawuzo lapambuyo la chizindikiro likumane. Izi ndi zofanana ndi zomwe zinachitika kale, kupatula kuti zizindikirozo zimakumana ndi zosiyana.

(): chenjezo: '' yowonjezera (): chenjezo: wamba ali pano

3.

Kugwirizanitsa chizindikiro chofanana ndi chizindikiro chofanana chofanana.

(): chenjezo: kawirikawiri `` symbol> ' (): chenjezo: kale lomwe liripo liri pano

4.

Kugwirizanitsa chizindikiro chofanana ndi chizindikiro chachikulu chofala.

(): chenjezo: wamba wa < 'wodalirika kwambiri ndi ): chenjezo: lalikulu lomwe liri lofala liri pano

5.

Kugwirizanitsa chizindikiro chofanana ndi chizindikiro chochepa chapadera. Izi ndi zofanana ndi zomwe zinachitika kale, kupatula kuti zizindikirozo zimakumana ndi zosiyana.

(): chenjezo: wamba ` 'wochuluka kwambiri (): chenjezo: zochepa zofanana ziri apa

- dziwani-omanga

Chenjezani ngati ogwira ntchito padziko lonse amagwiritsidwa ntchito. Izi ndi zothandiza kokha pa zojambula zochepa za mafayilo. Pakuti maofesi monga COFF kapena ELF, the linker sangathe kuzindikira kugwiritsa ntchito makina omanga dziko lonse lapansi.

- dziwani-multiple-gp

Chenjezani ngati zikhalidwe zambiri za pointer zamtengo wapatali zimayenera mu fayilo yotuluka . Izi ndi zothandiza kwambiri kwa opanga mapulogalamu, monga Alpha. Mwachindunji, mapulojekiti ena amapanga makina ofunika kwambiri mu gawo lapadera. Kalogalamu yapadera (pointer yapadziko lonse) imatchula pakati pa gawo ili, kotero kuti zitsulo zingathe kusindikizidwa bwino mwa njira yokhazikika yolembera. Kuchokera muzolemba zolembera zolembedwera ndizochepa komanso zochepa (mwachitsanzo, 16 bits), izi zimachepetsa kukula kwake kwa dziwe losatha. Kotero, mu mapulogalamu akulu, nthawi zambiri zimakhala zofunikira kugwiritsa ntchito maulendo ambiri padziko lonse pointer kuti athe kuthetsa nthawi zonse zomwe zingatheke. Njirayi imapangitsa chenjezo kuti liperekedwe ngati vutoli likupezeka.

- dziwani-kamodzi

Onjezerani kamodzi pa chizindikiro chilichonse chosadziwika, osati kamodzi pa gawo lomwe limatanthauzanso.

- onani-gawo-align

Chenjezani ngati adiresi ya chigawo chokambitsirana chasinthidwa chifukwa cha kugwirizana. Kawirikawiri, kulumikizidwa kudzakhazikitsidwa ndi gawo lolowera. Adilesi idzasinthidwa ngati sikufotokozedwa momveka bwino; ndiko kuti, ngati lamulo la "SECTIONS" silinatchule aderesi yoyamba ya gawolo.

- kupeza-archive

Kwa maofesi onse omwe atchulidwa pa mndandanda wazotsatira pambuyo pa chithunzi- chotsatira, chotsani chilichonse chojambula muzinthu zosungiramo zowonjezera, mmalo mofufuza zosungirako zazithunzi zomwe mukufuna . Izi kawirikawiri zimagwiritsidwa ntchito kutembenuza fayilo ya archive ku laibulale yogawana, kukakamiza chinthu chirichonse kuti chiphatikizidwe mu laibulale yomwe yagawanika. Njirayi ingagwiritsidwe ntchito kangapo.

Zolemba ziwiri mukamagwiritsa ntchito njirayi kuchokera ku gcc: Choyamba, gcc sadziwa za njirayi, kotero muyenera kugwiritsa ntchito -Wl, -nde-archive . Chachiwiri, musaiwale kugwiritsa ntchito -Wl, -nthu-archive pambuyo pa mndandanda wa zolemba zanu, chifukwa gcc yonjezerani mndandanda wa zolemba zanu kuti muwonane nawo ndipo simungafune kuti mbendera iyi ikhudze iwo.

- chizindikiro chopopera

Gwiritsani ntchito ntchito yowonjezera chizindikiro . Tsitsi lililonse losadziwika la chizindikiro lidzathetsedwa kuti "__ wrap_symbol". Ndemanga iliyonse yosadziwika ya "__real_symbol" idzasinthidwa kukhala chizindikiro .

Izi zikhoza kugwiritsidwa ntchito popereka ndondomeko ya ntchito. Ntchito yothandizira iyenera kutchedwa "__wrap_symbol". Ngati mukufuna kuitanira ntchitoyi, iyenera kutcha "__ real_symbol".

Pano pali chitsanzo chochepa:

palibe * __wrap_malloc (int c) {printf ("malloc otchedwa% ld \ n", c); bwererani __real_malloc (c); }}

Ngati mutumikiza foni yanu ndi fayiloyi pogwiritsira ntchito - kuvulaza , ndiye kuyitana konse ku "malloc" kudzatcha ntchito "__wrap_malloc" mmalo mwake. Kuitana kwa "__real_malloc" mu "__wrap_malloc" kudzatchedwa "malloc" ntchito weniweni.

Mwinamwake mukufuna kupereka "__real_malloc" ntchito, kotero zimagwirizanitsa popanda_kupopera njira idzapambana. Ngati muchita izi, musayikane tanthauzo la "__ real_malloc" mu fayilo yomweyo monga "__wrap_malloc"; ngati mutero, a assembler akhoza kuthetsa kuyitana pamaso pa linker ali ndi mwayi wokukulunga kuti "malloc".

zowonjezera-zatsopano

zowonongeka-zatsopano

Izi zogwirizanitsa zingathe kupanga matayala atsopano ku ELF. Koma akuluakulu a ELF machitidwe sangamvetse. Ngati mukulongosola - zatsopano-ma-dtags , ma tags amphamvu adzalengedwa ngati pakufunikira. Ngati mukulongosola - zowonongeka-zatsopano , palibe matepi atsopano omwe angapangidwe. Mwachikhazikitso, matepi atsopanowo sanagwidwe. Dziwani kuti zosankhazi zilipo zokhudzana ndi machitidwe aELF.

I386 PE kugwirizanitsa imathandizira njira -yiyi , yomwe imapangitsa kuti phindu likhale laibulale yogwiritsidwa ntchito (DLL) m'malo mwachizolowezi chotheka. Muyenera kutchula zotsatira za "* .dll" mukamagwiritsa ntchito njirayi. Kuphatikiza apo, linker imathandizira mowonjezera ma fayilo "* .def" omwe amatha kufotokozedwa pa mzere wolumikiza mzere monga fayilo. (Ndipotu, ziyenera kutsogolera zizindikiro zomwe zimatumizira zizindikiro kuchokera, kuti zitsimikizidwe kuti zimagwirizanitsidwa, monga fayilo yowoneka bwino).

Kuphatikiza pa zosankha zomwe zimagwirizana ndi zolinga zonse, i386 PE ikugwirizanitsa chithandizo choonjezera mndandanda wazowonjezera zomwe zili zenizeni kwa i386 PE. Zosankha zomwe zimatenga zoyenera zingakhale zosiyana ndi zikhulupiliro zawo ndi malo kapena chizindikiro chofanana.

- add-stdcall-alias

Ngati kuperekedwa, zizindikiro ndi stdcall suffix (@ nn ) zidzatumizidwa monga-ndi komanso zotsalira.

- fayilo-fayilo fayilo

Gwiritsani ntchito fayilo monga dzina la fayilo momwe mungasunge maadiresi oyambira onse omwe akufunikira kuti apange DLL ndi dlltool .

--za

Pangani DLL m'malo mokhazikika. Mungagwiritsirenso ntchito - kugawa kapena kutchula "LIBRARY" mu fayilo ya ".def".

- yokonza-stdcall-fixup

zosavuta-zodula-kukonza

Ngati chingwechi chikupeza chizindikiro chomwe sichithetsa, chiyesa kuchita '`kulumikizana kosavuta' 'poyang'ana chizindikiro china chomwe chimasiyanasiyana pokhapokha ndi dzina la chizindikiro (cdecl vs stdcall) ndipo lidzasintha chizindikiro chimenecho mwa kulumikiza kupita kumasewero. Mwachitsanzo, chizindikiro chosasinthika "_foo" chikhoza kugwirizanitsidwa ndi ntchito "_foo @ 12", kapena chizindikiro chosasinthika "_bar @ 16" chingakhale chogwirizana ndi ntchito "_bar". Pamene linker imachita izi, imapereka machenjezo, chifukwa nthawi zambiri imayenera kulephera kulumikizana, koma nthawi zina zimalowetsa makalata osungirako mabuku ochokera ku chipani chachitatu omwe angafune kuti pulogalamuyi ikhale yogwiritsidwa ntchito. Ngati mumatchula - yokonza-stdcall-fixup , mbali imeneyi yatha mphamvu ndipo machenjezo samasindikizidwa. Ngati mukulongosola - chosamveka-stdcall-fixup , chipangizo ichi chikulephereka ndipo zolakwika zoterozo zimaonedwa kuti ndi zolakwika.

--wonetsa-zonse-zizindikiro

Ngati kuperekedwa, zizindikiro zonse zapakati pa zinthu zomwe zimagwiritsidwa ntchito pomanga DLL zidzatumizidwa ndi DLL. Dziwani kuti izi ndi zosasintha ngati pakanakhala palibe zizindikiro zotumizidwa. Pamene zizindikiro zimatumizidwa mwachindunji kudzera mafayilo DEF kapena kutumizidwa kwathunthu kudzera ku zilembo zamagwiridwe, zolakwika sizingatumize china chirichonse kupatula ngati njirayi ikuperekedwa. Onani kuti "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", ndi "impure_ptr" sizidzatumizidwa kunja. Ndiponso, zizindikiro zomwe zimatumizidwa kuchokera ku DLL zina sizidzatumizidwanso, ndipo sizidzatanthauzira maonekedwe a mkati mwa DLL monga omwe akuyamba ndi "_head_" kapena kutha ndi "_iname". Kuwonjezera apo, palibe zizindikiro kuchokera ku libgcc, "libstd ++", "libmingw32", kapena "crtX.o" zidzatumizidwa. Zizindikiro zomwe maina awo amayamba ndi "__rtti_" kapena "__builtin_" sizidzatumizidwa, kuthandiza ndi C ++ DLLs. Pomaliza, pali mndandandanda wa zizindikiro za cygwin-zapadera zomwe sizikutumizidwa kunja (mwachiwonekere, izi zikugwiritsidwa ntchito panthawi yomanga DLLs pa zolinga za cygwin).

Ma cygwin-osaphatikizapo ndi awa: "_cygwin_dll_entry @ 12", "_cygwin_crt0_common @ 8", "_ggwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3 ", ndi" pafupifupi ".

- chizindikiro chophiphiritsira , chizindikiro , ...

Imatchula mndandanda wa zizindikiro zomwe siziyenera kutumizidwa. Mayina aphiphiritso akhoza kupangidwa ndi makasitomala kapena ma colons.

- kujambula-libs lib , lib , ...

Imatanthauzira mndandanda wa makalata osungira malemba omwe zisamangotumizidwa. Mayina a laibulale akhoza kuperekedwa ndi makasitomala kapena ma colons. Kufotokozera "-clude-libs ALL" samaphatikiza zizindikiro m'malaibulale onse osungirako kuchokera kuzinthu zochokera kunja. Zizindikiro zomwe zili m'fayilo ya .def zimatumizidwa kunja, mosasamala kanthu za njirayi.

- kulumikiza mafano

Tchulani kufanana kwa fayilo. Zagawo zomwe zili mu fayilo zidzayamba nthawi zonse polemba mafano omwe ali ochuluka a nambalayi. Izi zimawonongeka kufika pa 512.

- sungani zosungirako

- sungani zosungirako , chitani

Tchulani kuchuluka kwa kukumbukira kusungirako (ndi kusankhapo) kuti mugwiritse ntchito ngati mulu wa pulogalamuyi. Zosasintha ndi 1Mb zosungidwa, 4K.

mtengo wamtengo wapatali

Gwiritsani ntchito mtengo monga adondomeko ya pulogalamu yanu kapena dll. Iyi ndi malo otsika kwambiri omwe angagwiritsidwe ntchito pamene pulogalamu yanu kapena dll yanyamula. Kuti muchepetse kufunikira kokasintha ndikukwaniritsa ntchito zanu, aliyense ayenera kukhala ndi adiresi yapadera ndipo asawonongepo zina. Zosasintha ndi 0x400000 pazochita, ndi 0x10000000 kwa dlls.

--kill-at

Ngati atapatsidwa, zilembo za stdcall (@ nn ) zidzachotsedwa ku zizindikiro zisanatumizedwe.

- mtengo wamakono-image- value

Ikani chiwerengero chachikulu cha `` mtundu wa zithunzi ''. Zimasintha kwa 1.

- mtengo wamtengo wapatali -major-os-version

Ikani nambala yaikulu ya `` os version ''. Zimasintha mpaka 4.

- ndondomeko yamagulu-machitidwe

Ikani nambala yaikulu ya `` subsystem version ''. Zimasintha mpaka 4.

- mtengo wamtengo wapatali

Ikani chiwerengero chaching'ono cha `` mtundu wa zithunzi ''. Zimasintha ku 0.

- mtengo wamtengo wapatali

Ikani nambala yaing'ono ya `` os version ''. Zimasintha ku 0.

- ndondomeko yamagulu-machitidwe

Ikani nambala yaing'ono ya `` subsystem version ''. Zimasintha ku 0.

fayilo-def def

The linker idzalenga fayilo fayi yomwe ili ndi DEF mafayilo ofanana ndi DLL the linker akupanga. Fayilo iyi DEF (yomwe iyenera kutchedwa "* .def") ingagwiritsidwe ntchito popanga laibulale yophatikiza ndi "dlltool" kapena ingagwiritsidwe ntchito ngati kutanthauzira zowonongeka kapena zochokera kunja.

fayilo - implib

The linker adzalenga fayilo fayi yomwe ili ndi import bayi lofanana ndi DLL the linker akupanga. Kuitanitsa izi lib (zomwe ziyenera kutchedwa "* .dll.a" kapena "* .a" zingagwiritsidwe ntchito kugwirizanitsa makasitomala pa DLL yopangidwa; khalidwe ili limapangitsa kuti tisiye gawo losiyana la "makina a dlltool" ofunikira makalata.

chokhazikika-chojambula-chojambula

Sankhani mwatsatanetsatane maziko a DLL, kupatula ngati wina atchulidwa pogwiritsa ntchito ndemanga ya "-image-base". Pogwiritsira ntchito hash yochokera ku dname kuti apange zithunzithunzi zosiyana pa DLL iliyonse, kugwirizanitsa kukumbukira ndi kusamukira komwe kungachedwetse kuchitidwa pulogalamu kumapewa.

chotsitsa-chojambula-chojambula

Musangodzipangirani chokhazikitsira chithunzi chapadera. Ngati palibe chithunzi chachithunzi chomwe chimagwiritsidwa ntchito ("-image-base") ndiye gwiritsani ntchito nsanja zosasintha.

chingwe chojambulidwa -fry-search

Pogwirizana mwamphamvu ku dll popanda laibulale yamalonda, fufuzani " .dll" mmalo mwake "lib .dll". Khalidweli limapereka kusiyana kosavuta pakati pa DLLs omwe amadziwika kuti `` subplatforms '': mbadwa, cygwin, uwin, pw, ndi zina. Mwachitsanzo, cygwin DLLs amagwiritsa ntchito "-dll-search-prefix = cyg".

zotheka-kutumiza-kulowetsa

Kodi zovuta zimagwirizanitsa "_symbol" ndi "__imp__symbol" za DATA zochokera ku DLL, ndi kupanga zizindikiro zofunikira zogwiritsira ntchito popanga makanema amtengo wapatali ndi ma DATA. Izi kawirikawiri zidzangokhala "ntchito" --- koma nthawi zina mukhoza kuwona uthenga uwu:

"variable" 'silingathe kulowetsedwa mwachinsinsi. Chonde werengani zolemba za "- zotheka-kudzilowetsamo" kuti mudziwe zambiri.

Uthenga uwu umapezeka pamene mafotokozedwe ena (sub) amavomerezera adilesi pomaliza akuperekedwa ndi chiwerengero cha zigawo ziwiri (Win32 import tables amalola imodzi). Zomwe izi zikhoza kuchitika zimaphatikizapo mwayi wopita ku mamembala omwe ali nawo mbali za struct zosiyanasiyana zomwe zimatumizidwa kuchokera ku DLL, komanso kugwiritsa ntchito ndondomeko yosasinthika yochokera ku DLL. Mitundu yambiri yamagetsi (zojambula, zomangira, yaitali, etc) zingayambitse vutoli. Komabe, mosasamala kanthu za mtundu weniweni wa deta yosasinthika yotuluka, ld nthawi zonse idzaizindikira, ikani chenjezo, ndi kuchoka.

Pali njira zingapo zothetsera vutoli, mosasamala kanthu za mtundu wamtundu wa kusintha kotumizidwa:

Njira imodzi ndiyo kugwiritsa ntchito - kusintha-kothamanga-pseudo-reloc switch. Izi zimasiya ntchito yosintha malingaliro anu mu code yanu ya kasitomala kwa malo othamanga, kotero njira iyi imagwira ntchito pokhapokha ngati nthawi yoyendetsa ntchito ikuthandizira izi.

Yankho lachiwiri ndi kukakamiza chimodzi mwa 'Constant' kuti chikhale chosinthika - ndicho, chosadziwika ndi chosatheka kukonzekera nthawi. Pogwiritsa ntchito zidazi, pali zifukwa ziwiri: a) kupanga adirese (adiresi ya adiresi) yodalirika, kapena b) kupanga ndondomeko ya 'nthawi zonse' yosintha. Momwemo:

mtundu wamtundu extern_array []; extern_array [1] -> {chosasangalatsa mtundu * t = extern_array; t [1]}

kapena

mtundu wamtundu extern_array []; extern_array [1] -> {yosasinthika int t = 1; kutuluka kunja kwamasamba [t]}

Pakuti structs (ndi zina zambiri multiword deta mitundu) njira yokha ndiyo kupanga struct palokha (kapena yaitali yaitali, kapena ...) variable:

kunja kunja struct s extern_struct; extern_struct.field -> {yosasintha struct s * t = & extern_struct; t-> munda}

kapena

kunja kwautali motalika kunja_ll; extern_ll -> {yosasintha nthawi yaitali * loc_ll = & extern_ll; * local_ll}

Njira yachitatu yothetsera vutoli ndi kusiya 'kulowetsa mmalo' kwa chizindikiro chokhumudwitsa ndikuchilemba ndi "__declspec (dllimport)". Komabe, muzochita zomwe zimafuna kugwiritsa ntchito nthawi yowonkhanitsa #defini kuti muwonetse ngati mukukumanga DLL, chikhomodzinso cha makasitomala omanga chomwe chingagwirizane ndi DLL, kapena kungomangapo / kulumikiza ku laibulale yoyima. Pochita kusankha pakati pa njira zosiyanasiyana zothetsera vutoli ndi "vuto lokhazikika", muyenera kuganizira momwe ntchito yapadziko lonse ikugwirira ntchito:

Zachiyambi:

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

Solution 1:

--foo.h extern int arr []; --foo.c # kuphatikiza "foo.h" void main (int argc, char ** argv) {/ * Ntchitoyi ndi win32 ndi cygwin; musayese "kukonzetsa" * / osasunthika int * parr = arr; printf ("% d \ n", parr [1]); }}

Solution 2:

--foo.h / * Dziwani: kutumiza-kutumiza kwaokha kumaganiziridwa (palibe __decspsp (dllexport)) * / #if (kutanthauzira (_WIN32) || kutanthauzira (__ CYGWIN__)) && \! (kutanthauzira (FOO_BUILD_DLL) || kufotokozedwa (FOO_STATIC ) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif kunja FOO_IMPORT int arr []; --foo.c # kuphatikiza "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", kukonza [1]); }}

Njira yachinayi yopewera vutoli ndi kubwezeretsanso makalata anu kuti azigwiritsa ntchito mawonekedwe osasintha m'malo mwazithunzi zosiyana siyana (mwachitsanzo set_foo () ndi get_foo () zowonjezera ntchito).

zosavuta-kuzilowetsa-kulowetsa

Musayese kuchita zovuta zogwirizanitsa "_symbol" ndi "__imp__symbol" kwa DATAimports kuchokera ku DLLs.

--wotheka-wothamanga-pseudo-reloc

Ngati code yanu ili ndi mafotokozedwe ofotokozedwa -wotheka-auto-import gawo, ndiko kuti, DATAimports kuchokera ku DLL ndi osati zero offset, kusinthana kumeneku kudzapanga vector ya "runtime nthano zosamukira" zomwe zingagwiritsidwe ntchito ndi othamanga mozungulira kusintha mafotokozedwe kwa deta yotero mu code yanu ya kasitomala.

zosamvetseka-kuthamanga-pseudo-reloc

Musapangitse kusamukira kwachinsinsi kwazomwe sizinali zero kuchotsa zochokera ku DATA kuchokera ku DLL. Izi ndi zosasintha.

zowonongeka-zowonjezera

Onetsani zina zowonongeka zamtundu zokhudzana ndi kuitanitsa zamagetsi zamatsenga.

- kulumikiza-kusankhidwa

Ikani kusinthasintha kwa gawo. Gawo la kukumbukira lidzayamba pa maadiresi omwe ali angapo a nambala iyi. Zimasintha kwa 0x1000.

- sungani zosungira

- sungani zosungira , pangani

Tchulani kuchuluka kwa kukumbukira kusungirako (ndi kusankhapo) kuti mugwiritse ntchito monga stack pa pulogalamuyi. Kulephera kuli 2Mb yosungidwa, 4K.

- njira yomwe

- njira zomwe : zazikulu

- njira zomwe : zazikulu . ochepa

Imatchula gawo limene pulogalamu yanu idzachita. Malamulo omwe ndi "mbadwa", "mawindo", "console", ndi "posix". Mwinamwake mungasankhe kukhazikitsanso gawo lazinthu.

Chofunika: Gwiritsani ntchito lamulo la munthu ( % munthu ) kuti muwone momwe lamulo likugwiritsira ntchito pa kompyuta yanu.