Linux / Unix stjórn: Id

NAME

ld - Using LD , the GNU linker

Sýnishorn

ld [ valkostir ] objfile ...

LÝSING

ld sameinar fjölda mótmæla og skjalasafna, flytja gögnin og tengist táknatilvísunum. Venjulega er síðasta skrefið í að setja upp forrit að keyra ld .

ld samþykkir Linker Command Language skrár sem eru skrifaðar í superset af AT & T's Link Editor Command Language setningafræði, til að veita skýrt og algjört stjórn á tengslunarferlinu.

Þessi maður síðu lýsir ekki stjórnmálinu; sjáðu ld færsluna í "upplýsingar" eða handbók ld: GNU linker, til að fá nákvæmar upplýsingar um stjórnmálið og aðrar hliðar theGNU linker.

Þessi útgáfa af ld notar almenna tilganginn BFD bókasöfn til að starfa á hlutaskrám. Þetta gerir ld kleift að lesa, sameina og skrifa hlutaskrár í mörgum mismunandi sniði - til dæmis, COFF eða "a.out". Mismunandi snið má tengja saman til að framleiða allar tiltækar gerðir hlutaskráa.

Burtséð frá sveigjanleika sínum, er GNU linker gagnlegt en aðrir tenglar í að veita upplýsingar um greiningu. Margir tengiliðar yfirgefa framkvæmd strax við að upplifa villu; Þegar mögulegt er, heldur áfram áframhaldandi ld , sem gerir þér kleift að bera kennsl á aðrar villur (eða, í sumum tilfellum, til að fá útgangsskrá þrátt fyrir villuna).

GNU linker ld er ætlað að ná til fjölbreyttra aðstæðna og að vera eins samhæft og hægt er með öðrum tenglum. Þess vegna hefur þú marga möguleika til að stjórna hegðun sinni.

Valkostir

The linker styður ofgnótt af stjórn-lína valkostur , en í raun æfa fáir þeirra eru notuð í hvaða tilteknu samhengi. Til dæmis er tíð notkun ld að tengja venjuleg Unix mótmæla skrár á stöðluðu, unix kerfi sem styður. Á slíkt kerfi, til að tengja skrá "hello.o":

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

Þetta segir ld að framleiða skrá sem kallast framleiðsla vegna þess að tengja skrána "/lib/crt0.o" við "hello.o" og bókasafnið "libc.a", sem kemur frá stöðluðu leitarniðurstöðum. (Sjá umfjöllun um -l valkostinn hér að neðan.)

Sumir af stjórn-lína valkostir til ld má tilgreina hvenær sem er á stjórn lína. Hins vegar eru valkostir sem vísa til skráa, svo sem -l eða -T , að skráin sé lesin á þeim stað sem valkosturinn birtist á stjórnalínunni, miðað við hlutaskrárnar og aðrar skrár. Endurtekin valkostir sem ekki eru skrár með öðru röki munu annaðhvort ekki hafa nein frekari áhrif eða hunsa fyrri atburðir (þær lengra til vinstri á stjórnarlínuna) þess valkostar. Valkostir sem kunna að vera tilgreindar meira en einu sinni eru tilgreindar í lýsingu hér að neðan.

Valkostir sem ekki eru valmöguleikar eru hlutaskrár eða skjalasafn sem á að tengja saman. Þeir geta fylgst með, komið fyrir eða blandað saman við stjórnunarvalkostir, nema að ekki sé hægt að setja hlutarskráargildi milli valkosts og rökar þess.

Venjulega er linkerinn beittur með að minnsta kosti einum hlutaskrá, en þú getur tilgreint aðrar gerðir af tvöfalt inntakaskrár með því að nota -l , -R og handritið stjórnmál. Ef engin tvöfaldur innsláttarskrár eru tilgreindar, veldur hlekkurinn ekki nein framleiðsla og gefur út skilaboðin Engin innsláttarskrár .

Ef tengillinn getur ekki viðurkennt snið hlutarskráar, mun það gera ráð fyrir að það sé tengill handrit. Skriftur sem er skilgreindur með þessum hætti hjálpar augljósum aðalritari handritinu sem notaður er fyrir tengilinn (annaðhvort sjálfgefið tengill handrit eða sá sem er tilgreindur með því að nota -T ). Þessi eiginleiki leyfir tengilinn að tengja við skrá sem virðist vera hlutur eða skjalasafn en skilgreinir eingöngu sum tákn gildi, eða notar "INPUT" eða "GROUP" til að hlaða öðrum hlutum. Athugaðu að að skilgreina handrit á þennan hátt eykur einfaldlega aðalforritið; Notaðu -T valkostinn til að skipta um sjálfgefna tengiliðahandritið alveg.

Fyrir valkosti þar sem nöfn eru ein stafi, verður valkostargildi annaðhvort að fylgja valmöguleikanum án þess að millibilast hvítasvæði, eða gefðu sem sérstakar rök strax eftir þann valkost sem þarfnast þeirra.

Fyrir valkosti þar sem nöfn eru margar stafir, geta annaðhvort einn þjóta eða tveir fyrirfram valkostanafnið; til dæmis, -trace-tákn og -trace-tákn jafngilda. Athugaðu - það er ein undantekning frá þessari reglu. Mögulegir valkostir margra stafa sem byrja með lágstöfum "o" má aðeins framkvæma með tveimur punktum. Þetta er til að draga úr ruglingi við -o valkostinn. Svo til dæmis: -magic setur framleiðsla skráarnafnið til galdra en -magic setur NMAGIC flaggan á framleiðsluna.

Rök við valkosti með mörgum stafa skal annaðhvort aðgreind frá valkostanafni með jafnréttisskilti, eða gefin sem sérstakar rök strax eftir þann valkost sem þarfnast þeirra. Til dæmis, --Trace-táknið foo og -trace-symbol = foo jafngildir. Einstök skammstafanir á nöfnum margra stafa valkosta eru samþykktar.

Athugaðu - ef tengilinn er beittur óbeint, í gegnum þýðanda ökumann (td gcc ) þá ætti að vera fyrirfram allri hleðsluskipunarvalkostinum fyrir -Wl, (eða hvað sem er viðeigandi fyrir tiltekna þýðanda ökumann) eins og þetta:

gcc -Wl, - byrjunarhópur foo.o bar.o -Wl, - endgroup

Þetta er mikilvægt, vegna þess að annars er hægt að setja saman forritaraforritið hljóðlega, sem veldur slæmum hlekk.

Hér er tafla af almennum skipalínuskiptum sem GNU tengillinn samþykkir:

-a leitarorð

Þessi valkostur er studdur fyrir HP / UX samhæfni. Leitarorðargjaldið verður að vera eitt af skjalasöfnunum , deilt eða sjálfgefið . -aarchive er virkni jafngildir -Batic , og hin tvö leitarorð eru jafngildir -Bdynamic . Þessi valkostur getur verið notaður nokkrum sinnum.

- Arkitektúr

- arkitektúr = arkitektúr

Í núverandi útgáfu af ld , þessi valkostur er aðeins gagnleg fyrir Intel 960 fjölskyldu byggingar. Í þeirri ld stillingu lýsir arkitektúrargjarnan ákveðna arkitektúr í 960 fjölskyldunni og gerir það kleift að tryggja öryggisráðstafanir og breyta bókasafni bókasafnsins.

Framtíðarútgáfur ld geta stuðlað að svipuðum virkni fyrir aðra fjölskyldur byggingar.

-b inntaksnið

--format = inntaksnið

ld má stilla til að styðja fleiri en eina tegund af hlutaskrá. Ef ld þinn er stilltur með þessum hætti getur þú notað -b valkostinn til að tilgreina tvöfalt snið fyrir inntakslögskrár sem fylgja þessum valkosti á stjórn línunnar. Jafnvel þegar ld er stillt til að styðja við aðra mótmælaformi þarftu venjulega ekki að tilgreina þetta, þar sem ld ætti að vera stillt þannig að búast megi við sjálfgefið inntakssnið venjulega sniðið á hverri vél. innsláttarformi er textastrengur, heiti tiltekins sniði sem BFD-bókasöfnin styðja. (Þú getur skráð tiltæk tvöfalt snið með objdump -i .)

Þú gætir viljað nota þennan valkost ef þú tengir skrár með óvenjulegt tvöfalt snið. Þú getur líka notað -b til að skipta sniði skýrt (þegar tengja skrár hlutar með mismunandi sniðum), með því að innihalda -b inntaksnið fyrir hverja hóp hlutaskrár á tilteknu sniði.

Sjálfgefið snið er tekið úr umhverfisbreytunni "GNUTARGET".

Þú getur einnig skilgreint inntakssniðið úr handriti með því að nota skipunina "TARGET";

-c MRI-commandfile

- mri-script = MRI-commandfile

Fyrir eindrægni með tenglum sem framleiddar eru af Hafrannsóknastofnuninni samþykkir ld handritaskrár sem eru skrifaðar á öðrum, takmörkuðum stjórnmálum, sem lýst er í MRT Compatible Script Files kafla GNU ld skjölunar. Kynntu MRI handritaskrár með valkostinum -c ; Notaðu -T valkostinn til að keyra tengla forskriftir skrifaðar í almennum tilgangi ld forskriftarþarfir. Ef MRI-cmdfile er ekki til, lítur ld á það í möppunum sem eru tilgreind með einhverjum -L valkostum.

-d

-dc

-dp

Þessir þrír valkostir eru jafngildir; margar gerðir eru studdar fyrir eindrægni með öðrum tenglum. Þeir úthluta pláss til algengra tákna jafnvel þótt flutningsskrár sem er hægt að flytja sé tilgreind (með -r ). Handritið "FORCE_COMMON_ALLOCATION" hefur sömu áhrif.

-Eð innganga

--entry = innganga

Notaðu færslu sem skýrt tákn fyrir upphaf framkvæmd áætlunarinnar, frekar en sjálfgefið aðgangsstað. Ef ekkert tákn er nefnt færsla , mun hlekkurinn reyna að flokka færslu sem númer og nota það sem innsláttarfangið (talan verður túlkuð í grunn 10, þú getur notað leiðandi 0x fyrir grunn 16 eða leiðandi 0 fyrir grunn 8).

-E

- Export-dynamic

Þegar þú býrð til virk tengdan executable skaltu bæta öllum táknum við breytilega tákntöflunni. Breytilegt táknatafla er táknið sem er sýnilegt frá dynamic hlutum á hlaupandi tíma.

Ef þú notar ekki þennan möguleika mun venjulegur táknmynd venjulega aðeins innihalda þau tákn sem vísað er til af einhverjum dynamic hlut sem nefnd er í hlekknum.

Ef þú notar "dlopen" til að hlaða inn virkan hlut sem þarf að vísa aftur til táknanna sem skilgreind eru af forritinu, frekar en nokkur önnur dynamic hlutur, þá muntu líklega þurfa að nota þennan möguleika þegar þú tengir forritið sjálft.

Þú getur einnig notað útgáfuhandritið til að stjórna hvaða tákn ætti að bæta við breytilegu táknatöflunni ef framleiðsla sniðið styður það. Sjá lýsingu á - útgáfa -handriti í @ ref {VERSION}.

-EB

Tengdu stóra-endir hlutir. Þetta hefur áhrif á sjálfgefið framleiðslusnið.

-EL

Hringdu í litla hluti. Þetta hefur áhrif á sjálfgefið framleiðslusnið.

-f

- nafn

Þegar þú býrð til ELF deilt hlut skaltu stilla innra DT_AUXILIARY reitinn í tilgreint heiti. Þetta segir dynamic hlekkinn að táknatafla hlutdeildarins ætti að nota sem tengd sía á táknatöflunni hlutdeildarheitarinnar.

Ef þú hlekkur síðar forriti gegn þessu síu mótmæla, þá, þegar þú keyrir forritið, mun dynamic hlekkurinn sjá DT_AUXILIARY reitinn. Ef dynamic hlekkurinn leysir einhverjar tákn frá síuhlutanum mun hann fyrst athuga hvort skilgreining er á hlutdeild hlutdeildarinnar. Ef það er einn, verður það notað í stað skilgreiningarinnar í síuhlutanum. Heiti hlutdeildar hlutar þarf ekki til. Þannig er hægt að nota sameiginlega hlutanafnið til að veita aðra framkvæmd tiltekinna aðgerða, kannski fyrir kembiforrit eða vélrænni árangur.

Þessi valkostur má tilgreina meira en einu sinni. DT_AUXILIARY færslurnar verða búnar til í þeirri röð sem þær birtast á stjórnalínunni.

-F nafn

- Filter nafn

Þegar þú býrð til ELF deilt hlut skaltu stilla innra DT_FILTER reitinn í tilgreint heiti. Þetta segir dynamic hlekkinn að táknatafla hluti deilisins sem búið er að búa til ætti að nota sem sía á táknatöflunni á samnýttu heiti hlutans .

Ef þú hlekkur síðar forriti gegn þessu síu mótmæla, þá, þegar þú ert að keyra forritið, mun dynamic hlekkurinn sjá DT_FILTER reitinn. The dynamic linker mun leysa tákn í samræmi við táknatöflu síu mótmæla eins og venjulega, en það mun í raun tengja við skilgreiningar sem finnast í hlutdeild hlutdeildarinnar. Þannig er hægt að nota síuhlutinn til að velja undirhóp táknanna sem hlutar heiti .

Sumir eldri tenglar notuðu -F valkostinn í gegnum samanlögðu toolchain til að tilgreina mótmæla-skráarsnið fyrir bæði inntak og úttak hlutaskrár. GNU linker notar aðrar aðferðir í þessu skyni: -b , --format , --oformat valkostir, "TARGET" skipunin í linker forskriftir og "GNUTARGET" umhverfisbreytu. GNU-tengilinn mun hunsa valkostinn -F þegar ekki er búið að búa til ELF sameiginlegan hlut.

-fín nafn

Þegar þú býrð til ELF keyranlegt eða sameiginlegt mótmæla skaltu hringja í NAME þegar executable eða hluti mótmæla er hlaðið af með því að stilla DT_FINI á heimilisfang aðgerðarinnar. Sjálfgefið notar tengilinn "_fini" sem aðgerðina til að hringja.

-g

Hunsuð. Veitt fyrir samhæfni við önnur verkfæri.

-G gildi

--gpsize = gildi

Stilla hámarks stærð hluta sem á að fínstilla með GP skránum að stærð . Þetta er aðeins þýðingarmikið fyrir mótmæla skráarsnið eins og MIPS ECOFF sem styður að setja stór og smá hluti í mismunandi hlutum. Þetta er hunsuð fyrir önnur skráarsnið hlutar.

-h nafn

-soname = nafn

Þegar þú býrð til ELF deilt hlut skaltu stilla innra DT_SONAME reitinn í tilgreint heiti. Þegar executable er tengdur við sameiginlegan hlut sem hefur DT_SONAME reit þá mun þá dynamic hlekkurinn reyna að hlaða sameiginlegum hlutnum sem tilgreint er af DT_SONAME reitnum frekar en að nota heiti skráarinnar sem gefinn er upp á hlekkinn.

-i

Framkvæma stigvaxandi hlekk (sama og valkostur -r ).

-heiti

Þegar þú býrð til ELF executable eða sameiginlegan hlut skaltu hringja í NAME þegar executable eða shared object er hlaðinn með því að stilla DT_INIT á heimilisfang aðgerðarinnar. Sjálfgefið notar tengilinn "_init" sem aðgerðina til að hringja.

-l skjalasafn

- bókasafn = skjalasafn

Bættu við skjalasafnaskrá í lista yfir skrár til að tengjast. Þessi valkostur getur verið notaður nokkrum sinnum. ld mun leita að slóðarlistanum fyrir tilvikum "libarchive.a" fyrir hvert skjalasafn sem tilgreint er.

Á kerfi sem styðja samnýtt bókasöfn getur ld einnig leitað að bókasöfnum með viðbótum öðrum en ".a". Sérstaklega, á ELF og SunOS kerfi, mun ld leita í möppu fyrir bókasafn með framlengingu ".so" áður en leitað er eftir einum með viðbót við ".a". Samkvæmt venju gefur ".so" eftirnafn sameiginlegt bókasafn.

Tengillinn leitar aðeins í skjalasafn einu sinni á þeim stað þar sem hann er tilgreindur á stjórn línunnar. Ef skjalasafnið skilgreinir tákn sem var óskilgreint í sumum hlutum sem birtust fyrir skjalasafnið á stjórn línunnar, þá mun tengillinn innihalda viðeigandi skrá (s) úr skjalinu. Hins vegar óskilgreint tákn í hlut sem birtist síðar á skipanalínu mun ekki valda því að tengillinn leiti í skjalasafnið aftur.

Sjá - ( valkostur fyrir leið til að knýja á tengilinn til að leita í skjalasafni mörgum sinnum.

Þú getur skráð sama skjalasafn margvíslega á stjórnalínunni.

Þessi tegund af skjalasöfnum er staðal fyrir Unix linkers. Hins vegar, ef þú ert að nota ld áAIX, athugaðu að það sé frábrugðið hegðun AIX linker.

-L leitardir

--library-path = searchdir

Bættu við path searchdir við lista yfir leiðir sem ld mun leita að bókasöfnum og ld stjórnunarskriftir. Þú getur notað þennan valkost nokkrum sinnum. Leiðbeiningar eru leitað í þeirri röð sem þau eru tilgreind á stjórn línunnar. Möppur sem eru tilgreindir á stjórn línunnar eru leitað fyrir sjálfgefna möppurnar. All -L valkostir eiga við um alla -l valkosti, óháð því hvaða röð valkostirnir birtast.

Ef searchdir byrjar með "=", þá verður "=" skipt út fyrir sysroot forskeyti , slóð sem er tilgreind þegar tengilinn er stilltur.

Sjálfgefið sett af leiðum sem leitað er (án þess að vera tilgreint með -L ) fer eftir því hvaða emulunarhamur ld er að nota, og í sumum tilvikum einnig hvernig hann var stilltur.

Leiðin er einnig hægt að tilgreina í tengiliðsforriti með "SEARCH_DIR" skipuninni. Möppur sem eru tilgreindir með þessum hætti eru leitað á þeim stað sem tengilinnsforritið birtist á stjórnalínunni.

-m emulation

Emulate emulation linker. Þú getur listað fyrirliggjandi emulations með --verbose eða -V valkosti.

Ef -m valkosturinn er ekki notaður er emulationin tekin úr umhverfisbreytunni "LDEMULATION", ef það er skilgreint.

Annars fer sjálfgefið emulation eftir því hvernig tengilinn var stilltur.

-M

- Prentkort

Prenta tengiliðakort til stöðluðu framleiðslunnar. Tengikort veitir upplýsingar um tengilinn, þar á meðal eftirfarandi:

*

Þar sem hlutaskrár og tákn eru kortlagðir í minni.

*

Hvernig sameiginleg tákn eru úthlutað.

*

Allar skrárarmenn eru með í hlekknum, með minnst á táknið sem olli skjalasafninu að koma inn.

-n

- Nemagic

Slökktu á síðujöfnun á hlutum og merkið framleiðsluna sem "NMAGIC" ef hægt er.

-N

- ótrúlegt

Stilltu texta- og gagnahlutana til að hægt sé að lesa og skrifa. Einnig skaltu ekki leiðrétta gagnasniðið og gera slökkt á tengingu við sameiginleg bókasöfn. Ef framleiðsla snið styður Unix stíl töfra tölur, merkja framleiðsla sem "OMAGIC".

- ekki-ógleði

Þessi valkostur neitar flestum áhrifum -N- valkostarinnar. Það setur textasniðið til að vera eingöngu lesið og þvingar gagnasniðið að vera blaðsíðt. Athugaðu - þessi valkostur gerir ekki kleift að tengja við sameiginlega bókasöfn. Notaðu -Bdynamic fyrir þetta.

-o framleiðsla

--útgang = framleiðsla

Notaðu framleiðsla sem nafnið á forritinu sem framleitt er af ld ; Ef þessi valkostur er ekki tilgreindur er nafnið a.out notað sjálfgefið. The handrit stjórn "OUTPUT" getur einnig tilgreint framleiðsla skrá nafn.

-O stigi

Ef stig er tölugildi meiri en núll ld hagræður framleiðsla. Þetta gæti tekið verulega lengri tíma og því ætti líklega aðeins að vera virkjað fyrir lokaþyrpinguna.

-q

-

Skildu flutningskerfi og innihald í fullkomlega tengdum exececutables. Greinar og hagræðingarverkfæri eftir tengingu geta þurft þessar upplýsingar til að framkvæma rétta breytingar á executables. Þetta leiðir til stærri executables.

Þessi valkostur er nú aðeins studd á ELF pallur.

-r

- aðgengileg

Búðu til flytjanlegur framleiðsla --- þ.e. myndaðu framleiðsla skrá sem síðan getur þjónað sem inntak til ld . Þetta er oft kallað að hluta hlekkur . Sem aukaverkun, í umhverfi sem styðja venjulega Unix galdur númer, setur þessi valkostur einnig galdur númer framleiðslugjaldsins í "OMAGIC". Ef þessi valkostur er ekki tilgreindur er alger skrá framleidd. Þegar þú hlekkur C ++ forritum mun þessi valkostur ekki leysa tilvísanir til smiðjenda; að gera það, nota -Ur .

Þegar innsláttarskrá hefur ekki sömu sniði og framleiðslulistann, er að hluta að tengja aðeins ef þessi innsláttarskrá inniheldur engar flutningar. Mismunandi framleiðsla snið geta haft frekari takmarkanir; Til dæmis styðja sumar "a.out" -birst snið ekki að hluta til að tengja inntakssskrár í öðrum sniðum yfirleitt.

Þessi valkostur er það sama og -i .

-R skráarnafn

--just-symbols = filename

Lestu tákn nöfn og heimilisföng þeirra frá skráarnafninu , en flytðu það ekki eða settu það í framleiðsluna. Þetta gerir framleiðslulistanum þínum kleift að vísa til algerlega staðsetningar minni sem er skilgreint í öðrum forritum. Þú getur notað þennan valkost meira en einu sinni.

Fyrir eindrægni með öðrum ELF-tenglum, ef valkosturinn -R er fylgt eftir með möppuheitum , frekar en skráarheiti, er það meðhöndlað sem -rpath valkosturinn.

-s

- Strik-allt

Slepptu öllum táknupplýsingum úr framleiðslulistanum.

-S

- strip-debug

Slepptu upplýsingum um aflúsara tákn (en ekki öll tákn) úr framleiðslulistanum.

-t

- ferð

Prenta nöfn inntakaskráa þegar ld vinnur þá.

-T scriptfile

--script = scriptfile

Notaðu scriptfile sem linker script. Þessi handrit kemur í stað ld 's sjálfgefna tengilluskrá (frekar en að bæta við því), svo skipunarskrá verður að tilgreina allt sem nauðsynlegt er til að lýsa útgangsskránni. Ef scriptfile er ekki til í núverandi möppu, leitar "ld" eftir því í möppunum sem tilgreindar eru af öllum fyrri valkostum. Margfeldi -T valkostir safnast upp.

-t tákn

--undefined = tákn

Tvinga táknið til að slá inn í framleiðslulistann sem óskilgreint tákn. Að gerast þetta getur td kallað saman viðbótareiningarnar frá venjulegu bókasöfnum. -Þú getur verið endurtekin með mismunandi valkostargögnum til að slá inn fleiri óskilgreind tákn. Þessi valkostur jafngildir "EXTERN" tengiliðaskipunarskipuninni.

-Ur

Fyrir annað en C ++ forrit, þessi valkostur jafngildir -r : það býr til flytjanlegur framleiðsla --- þ.e. framleiðsla skrá sem síðan getur þjónað sem inntak í ld . Þegar tengist C ++ forritum, -Ur leysir tilvísanir til smiðjenda , ólíkt -r . Það virkar ekki að nota -Er á skrár sem voru sjálfir tengdir -Ur ; Þegar byggingarborðið hefur verið byggt getur það ekki verið bætt við. Nota -Er aðeins fyrir síðustu hluta tengilinn, og -r fyrir hina.

- unique [= SECTION ]

Býr til sérstakan framleiðslusvið fyrir hvert innsláttarsvæði sem passar við HLUTI , eða ef valfrjálst wildcard SECTION þættir vantar fyrir hverja munaðarlausan innsláttarhluta. A munaðarleysingjahlutur er einn sem ekki er sérstaklega getið í tengiliðasniðinu. Þú getur notað þennan möguleika mörgum sinnum á stjórn línunnar; Það kemur í veg fyrir eðlilega sameiningu inntakshluta með sama nafni, yfirsýnandi framleiðslusniðsverkefni í tengiliðasniðinu.

-v

- útgáfa

-V

Sýna útgáfuna fyrir ld . The -V valkostur listar einnig studd emulations.

-x

--discard-allur

Eyða öllum staðbundnum táknum.

-X

--discard-heimamenn

Eyða öllum tímabundnum staðbundnum táknum. Í flestum markmiðum eru þetta öll staðbundin tákn, þar sem nöfn byrja með L.

-tákn

--Trace-tákn = tákn

Prenta nafn hvers tengdrar skráar þar sem táknið birtist. Þessi valkostur má gefa nokkrum sinnum. Á mörgum kerfum er nauðsynlegt að undirrita undirstreymi.

Þessi valkostur er gagnlegur þegar þú hefur óskilgreint tákn í tengilinn þinn en veit ekki hvar tilvísunin kemur frá.

-Y slóð

Bættu við slóð við sjálfgefna bókasafnsleiðina. Þessi valkostur er til fyrir samhæfni Solaris.

-z leitarorð

Viðurkennd leitarorð eru "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "uppruna", "combreloc", "nocombreloc" og "nocopyreloc" ". Önnur leitarorð eru hunsuð fyrir samhæfni Solaris. "initfirst" merkir að hluturinn sem á að vera frumstilltur fyrst í afturkreistingur fyrir önnur atriði. "interpose" merkir hlutinn sem táknborðið leggur fyrir öll tákn en aðalforritið. "loadfltr" merkir hlutinn sem filtees hennar er unnin strax við afturkreistinguna. "nodefaultlib" merkir hlutinn sem leitin að því að ósjálfstæði þessa hlutar muni hunsa hvaða sjálfgefnar bókasöfnunarleiðir. "nodelete" merkir að hlutirnir ættu ekki að vera affermdir við afturkreistinguna. "nodlopen" merkir hlutinn ekki í boði fyrir "dlopen". "nodumpump" merkir að hluturinn má ekki deyja með "dldump". "Nú" merkir hlutinn með bindingu sem ekki er latur. "Uppruni" merkir að hluturinn getur innihaldið $ ORIGIN. "defs" leyfir óskilgreindum táknum. "muldefs" leyfir mörgum skilgreiningum. "combreloc" sameinar margvíslegar flutningsþættir og flokkar þær til að hægt sé að búa til breytilegt táknmyndatöku.

"nocombreloc" deaktiverar margvíslegum flutningskerfum sem sameina. "nocopyreloc" slökkva á framleiðslu afrita.

- ( skjalasafn -)

- byrjunarhópur skjalasöfn - endahópur

Skjalasafnið ætti að vera listi yfir skjalasafn . Þau geta verið annað hvort skýr skráarnöfn eða -l valkostir.

Uppgefnar skjalasöfn eru leitað endurtekið þar til engar nýjar óskilgreindar tilvísanir eru búnar til. Venjulega er leitað í skjalasafninu einu sinni í þeirri röð sem það er tilgreint á stjórn línunnar. Ef tákn í því skjalasafn er nauðsynlegt til að leysa óákveðinn tákn sem vísað er til af hlut í skjalasafninu sem birtist seinna á stjórn línunnar, gæti tengilinn ekki getað leyst þessi tilvísun. Með því að safna skjalasöfnum, eru þau öll leitað endurtekin þar til allar mögulegar tilvísanir eru leystar.

Notkun þessarar valkostar hefur verulegan árangurskostnað. Það er best að nota það aðeins þegar það er óhjákvæmilegt hringlaga tilvísanir milli tveggja eða fleiri skjala.

- samþykkis-óþekkt inntaksboga

- ekki-samþykkja-óþekkt inntaksboga

Segir tengilinn að samþykkja inntakaskrár sem ekki er hægt að þekkja arkitektúr. Gert er ráð fyrir að notandinn veit hvað þeir eru að gera og vill vísvitandi tengjast í þessum óþekktum inntakaskráum. Þetta var sjálfgefið hegðun linker, áður en hún lék 2.14. Sjálfgefið hegðun frá útgáfu 2.14 og áfram er að hafna slíkum innsláttarskrám og svo er valkosturinn - samþykktur-óþekktur-innsláttur-boga bætt við til að endurheimta gamla hegðunina.

-tiltekið leitarorð

Þessi valkostur er hunsaður fyrir SunOS samhæfni .

-Bdynamic

-dy

-call_shared

Tengill á breytilegum bókasöfnum. Þetta er aðeins þýðingarmikið á vettvangi þar sem sameiginlegir bókasöfn eru studdar. Þessi valkostur er venjulega sjálfgefið á slíkum vettvangi. Mismunandi afbrigði þessarar valkostar eru fyrir samhæfni við ýmis kerfi. Þú getur notað þennan möguleika mörgum sinnum á stjórn línunnar: það hefur áhrif á bókasafnaleit fyrir -l valkosti sem fylgja því.

-Bgroup

Settu "DF_1_GROUP" flipann í "DT_FLAGS_1" færsluna í dynamic hlutanum. Þetta veldur því að afturkreistingur tengillinn taki eftir leitum í þessum hlut og aðstæðum hans sé aðeins gerður innan hópsins. - engin óskilgreint er gefið til kynna. Þessi valkostur er aðeins þýðingarmikill á ELF-kerfum sem styðja samnýtt bókasöfn .

-Bstatic

-dn

-non_shared

-static

Ekki tengja á móti sameiginlegum bókasöfnum. Þetta er aðeins þýðingarmikið á vettvangi þar sem sameiginlegir bókasöfn eru studdar. Mismunandi afbrigði þessarar valkostar eru fyrir samhæfni við ýmis kerfi. Þú getur notað þennan möguleika mörgum sinnum á stjórn línunnar: það hefur áhrif á bókasafnaleit fyrir -l valkosti sem fylgja því.

-Bymbolic

Þegar þú býrð til samnýtt bókasafn, bindðu tilvísanir í alheimsmerki við skilgreiningu innan samnýttrar bókasafns, ef einhver er. Venjulega er hægt að forrit sem tengist sameiginlegu bókasafni til að hunsa skilgreininguna innan sameiginlegs bókasafns. Þessi valkostur er aðeins þýðingarmikill á ELFplatforms sem styðja samnýtt bókasöfn.

- eftirlitshlutar

- engar athuganir

Beinir tengilinn ekki til að athuga kafla viðtakendur eftir að þeir hafa verið úthlutaðir til að sjá hvort einhver skarast. Venjulega mun hlekkurinn framkvæma þessa athugun, og ef það finnur einhverjar skarast það mun framleiða viðeigandi villuboð. The hlekkur er vitað um, og gerir heimildir fyrir köflum í overlays. Sjálfgefið hegðun er hægt að endurheimta með því að nota skipanalínulistann.

--cref

Gefið út krossviðmiðunartöflu. Ef myndavélin er búin til er krossviðmiðunartaflan prentuð á kortaskrána. Annars er það prentað á stöðluðu framleiðslunni.

Sniðið á töflunni er af ásettu ráði einfalt, þannig að það sé auðvelt að vinna með handriti ef þörf krefur. Táknin eru prentuð út, raðað eftir nafni. Fyrir hvert tákn er listi yfir skráarnöfn gefið. Ef táknið er skilgreint er fyrsta skráin sem skráð er staðsetning skilgreiningarinnar. Eftirstöðvarnar innihalda tilvísanir í táknið.

- ekki skilgreint-algengt

Þessi valkostur hamlar úthlutun heimilisföng til algengra tákna. Handritið "INHIBIT_COMMON_ALLOCATION" hefur sömu áhrif.

The -no-define-sameiginlegur valkostur gerir kleift að aftengja ákvörðunina um að úthluta heimilisföngum til algengra tákna frá vali framleiðslustigsins; annars er ekki hægt að flytja út heimilisföng til að sameina sameiginleg tákn. Notkun -no-define-common leyfir Algeng tákn sem eru vísað frá samnýttu bókasafni til að fá úthlutað heimilisföng aðeins í aðalforritinu. Þetta útilokar ónotað tvítekið rými í samnýttu bókasafninu og kemur einnig í veg fyrir hugsanlegt rugl á að leysa úr röngum afritum þegar það eru margar dynamic einingar með sérhæfðum leitarleiðum fyrir upplausnartímabilið.

--defsym tákn = tjáning

Búðu til alþjóðlegt tákn í framleiðslulistanum, sem inniheldur alger heimilisfang gefið með tjáningu . Þú getur notað þennan möguleika eins oft og nauðsynlegt er til að skilgreina margar tákn á stjórnarlínunni. Takmarkað form reiknings er studd fyrir tjáninguna í þessu samhengi: Þú getur gefið tólftíufaldan stöðugt eða nafnið á núverandi tákni, eða notað "+" og "-" til að bæta við eða draga frá tíundarþéttum stöðlum eða táknum. Ef þú þarft frekari vandaður tjáningu skaltu íhuga að nota linker stjórnmálið frá handriti. Athugið: Það ætti ekki að vera hvítt bil á milli tákn , jöfn tákn (`` = '') og tjáning .

- deildu [= stíl ]

- ekki-demangle

Þessir valkostir stjórna hvort að deildu táknheitum í villuskilaboðum og öðrum framleiðsla. Þegar tengillinn er sagður demangle, reynir hann að gefa táknnöfn á læsanlegan hátt: það ræmur leiðandi undirstrikun ef þau eru notuð af hlutarskráarsniðinu og breytir C + + mangled táknheiti í notendanlegar nöfn. Mismunandi þýðendur hafa mismunandi mangling stíl. Valfrjálst demangling stíl rifrildi er hægt að nota til að velja viðeigandi fjarlægð stíl fyrir þýðanda þinn. Tengillinn mun demangle sjálfgefið nema umhverfisbreytan COLLECT_NO_DEMANGLE sést. Þessar valkostir má nota til að hunsa sjálfgefið.

--dynamic-linker skrá

Stilltu heitið á dynamic hlekkinn. Þetta er aðeins þýðingarmikið þegar búið er að búa til virk tengdan ELF executables. Sjálfgefið dynamic hlekkur er venjulega rétt; ekki nota þetta nema þú vitir hvað þú ert að gera.

- fylgdarmenn

Þessi valkostur er aðeins þýðingarmikill þegar tenging MIPS embed in PIC kóða, myndaður af -membedded-pic valkostur við GNU þýðanda og assembler. Það veldur því að tengillinn búi til töflu sem hægt er að nota við afturkreistingur til að flytja öll gögn sem voru upphaflega stilla á bendilinn. Sjá kóðann í testuite / ld-empic fyrir nánari upplýsingar.

- hættulegar viðvaranir

Meðhöndla allar viðvaranir sem villur .

--force-exe-suffix

Gakktu úr skugga um að framleiðsla skrá hafi .exe viðskeyti.

Ef tilheyrandi byggður fullbúin framleiðsla skrá hefur ekki ". Exe " eða " .dll " viðskeyti, þá veldur þessi valkostur tengilinn til að afrita framleiðslulánið í eitt af sama heiti með ".exe" viðskeyti. Þessi valkostur er gagnlegur þegar unix makefiles eru notaðar á Microsoft Windows gestgjafi, þar sem sumar útgáfur af Windows munu ekki hlaupa mynd nema það endist í ".exe" viðskeyti.

- ekki-gc-köflum

- gc-köflum

Virkja sorpasöfnun ónotaðra innsláttarþátta. Það er hunsað á markmiðum sem styðja ekki þennan möguleika. Þessi valkostur er ekki samhæfur við -r , né ætti hann að nota með dynamic hlekkur. Sjálfgefið hegðun (ef ekki er að skila sorpasafni ) er hægt að endurreisa með því að tilgreina --no-gc-köflum á stjórn línunnar.

- hjálp

Prenta yfirlit yfir skipanalínuna á venjulegu framleiðslunni og lokaðu.

- stuðningshjálp

Prenta samantekt á öllum miðlægum valkostum á stöðluðu framleiðslunni og loka.

-Mapp mapfile

Prenta tengiliðsskjá í skráarkortið . Sjá lýsingu á -M valkostinum hér fyrir ofan.

- ekki-halda-minni

ld bætir venjulega fyrir hraða yfir minni notkun með því að afrita táknatöflurnar af inntakslögum í minni. Þessi valkostur segir ld að staðsetja í stað minnisnotkunar með því að endurreisa táknatöflurnar eftir þörfum. Þetta kann að vera nauðsynlegt ef ld rennur út úr minni þegar tengt er stórt executable.

- engin óskilgreint

-s defs

Venjulega þegar óskráð samnýtt bókasafn er búið til er óskilgreint tákn heimilt og skilað eftir afturkreistingur. Þessar valkostir leyfa slíkum óskilgreindum táknum.

- Allow-multiple-definition

-z muldefs

Venjulega þegar tákn er skilgreint mörgum sinnum mun tengillinn tilkynna um banvæn villa. Þessir valkostir leyfa mörgum skilgreiningum og fyrsta skilgreiningin verður notuð.

--allow-shlib-undefined

Leyfa óskilgreind tákn í samnýttum hlutum, jafnvel þótt ekki sé skilgreint neitt óskilgreint. Nettó niðurstaðan verður sú að óskilgreind tákn í reglulegum hlutum munu enn kalla til villu, en óskilgreind tákn í sameiginlegum hlutum verða hunsuð. Framkvæmd no_undefined gerir ráð fyrir að afturkreistingur hlekkurinn muni kæla á óskilgreindum táknum. Hins vegar er að minnsta kosti eitt kerfi (BeOS) þar sem óskilgreindir tákn í samnýttum bókasöfnum eru eðlilegar þar sem kjarninn bætir þá við hleðslutíma til að velja hvaða aðgerð er best viðeigandi fyrir núverandi arkitektúr. IE velur viðeigandi memset virka. Apparently það er einnig eðlilegt að HPPA hluti bókasöfn hafa ódeildu tákn.

- engin óskilgreint útgáfa

Venjulega þegar tákn hefur óákveðinn útgáfu mun linker hunsa hana. Þessi valkostur útilokar tákn með óskilgreindri útgáfu og staðbundin villa verður gefin út í staðinn.

- engin viðvörun-misræmi

Venjulega ld mun gefa villu ef þú reynir að tengja saman inntak skrár sem eru misréttar af einhverjum ástæðum, kannski vegna þess að þeir hafa verið safnar saman fyrir mismunandi örgjörvum eða fyrir mismunandi endiannesses. Þessi valkostur segir ld að það ætti hljótt að leyfa slíkar mögulegar villur. Þessi valkostur ætti aðeins að nota með varúð, ef þú hefur tekið sérstaka aðgerð sem tryggir að tengill villur séu óviðeigandi.

- ekki-heild-skjalasafn

Slökktu á áhrifum hvern-skjalavalkostans fyrir síðari skjalaskrár.

- neyðarútgáfa

Halda framkvæmanlegur framleiðsla skrá hvenær það er enn nothæft. Venjulega mun linkerinn ekki framleiða framleiðsla skrá ef hann finnur villur á tengilinn ferli; það hættir án þess að skrifa framleiðslulista þegar það gefur til kynna einhverjar villur.

-nostdlib

Aðeins leitað bókasafnsfyrirtækja sem tilgreindar eru sérstaklega á stjórn línunnar. Bókasafn framkvæmdarstjóra sem tilgreind er í linker forskriftir (þ.mt hlekkur forskriftir tilgreind á stjórn lína) eru hunsuð.

--óformat framleiðsla-snið

ld má stilla til að styðja fleiri en eina tegund af hlutaskrá. Ef ld þín er stillt á þennan hátt getur þú notað --oformat valkostinn til að tilgreina tvöfalt snið fyrir framleiðslulífskrána. Jafnvel þegar ld er stillt til að styðja við aðra mótmælaformi þarftu venjulega ekki að tilgreina þetta, þar sem ld ætti að vera stillt til að framleiða sem sjálfgefið útgangssnið venjulegasta sniðið á hverri vél. framleiðsla-snið er texti strengur, nafnið á tilteknu sniði sem studd er af BFD bókasöfnum. (Þú getur listað tiltækt tvöfalt snið með objdump -i .) Handritið "OUTPUT_FORMAT" getur einnig tilgreint framleiðslusniðið, en þessi valkostur yfirþyrir hana.

-qmagic

Þessi valkostur er hunsaður fyrir Linux eindrægni.

-Qy

Þessi valkostur er hunsaður fyrir SVR4 samhæfni.

- tengsl

Möguleiki með váhrifumáhrifum á vélinni. Þessi valkostur er aðeins stuttur á nokkrum skotmörkum.

Á sumum vettvangi framkvæmir valkosturinn -relax alþjóðlegar hagræðingar sem verða mögulegar þegar tengilinn ákveður að takast á við í forritinu, svo sem slökkt á aðstæðum og nýtir nýjar leiðbeiningar í framleiðslulíkaninu.

Á sumum vettvangi geta þessar alþjóðlega hagræðingar á tímatengdum tímamótum gert táknræna kembiforrit á því sem leiðir til þess að hægt er að framkvæma það. Þetta er vitað að vera málið fyrir Matsushita MN10200 og MN10300 fjölskyldan af örgjörvum.

Á vettvangi þar sem þetta er ekki stutt, - tenging er samþykkt, en hunsuð.

--tekna-tákn-skráar heiti skráar

Haltu aðeins táknunum sem eru skráðar í skráarnafnið og fleygðu öllum öðrum. filename er einfaldlega íbúð skrá, með eitt tákn nafn á línu. Þessi valkostur er sérstaklega gagnlegur í umhverfi (svo sem VxWorks) þar sem stórt alþjóðlegt táknatafla er safnað smám saman til að varðveita hlaupstíma minni.

- Haltu-tákn-skrá eyðir ekki óskilgreindum táknum eða táknum sem þarf til flutnings.

Þú mátt aðeins tilgreina - hreinsa-tákn-skrá einu sinni á stjórn línunnar. Það overrides -s og -S .

-rpath dir

Bættu við möppu í leitarslóðinni fyrir afturkreistingur. Þetta er notað þegar tengt er ELFexecutable með sameiginlegum hlutum. All- rpath rök eru concatenated og liðin til afturkreistingur hlekkur, sem notar þá til að finna hluti á afturkreistingur. The- rpath valkosturinn er einnig notaður þegar staðsetja hluti sem eru nauðsynleg með sameiginlegum hlutum sem eru sérstaklega með í hlekknum; sjá lýsingu á -rpath-link valkostinum. Ef -rpath er ekki notað þegar tengt er við ELF executable, verður innihald umhverfisbreytu "LD_RUN_PATH" notað ef það er skilgreint.

Hægt er að nota -rpath valkostinn á SunOS. Sjálfgefin, á SunOS, mun hlekkurinn mynda afturkreistingur leitarplástur úr öllum -L valkostum sem gefnar eru upp. Ef a- rpath valkostur er notaður verður afturkreistingur leitarslóðin eingöngu búin til með því að nota -rpath valkosti, hunsa -L valkostina. Þetta getur verið gagnlegt þegar þú notar gcc, sem bætir mörgum -L valkostum sem kunna að vera á NFS uppsettum skráakerfum.

Fyrir eindrægni með öðrum ELF-tenglum, ef valkosturinn -R er fylgt eftir með möppuheitum , frekar en skráarheiti, er það meðhöndlað sem -rpath valkosturinn.

-rpath-hlekkur DIR

Þegar þú notar ELF eða SunOS getur annað sameiginlegt bókasafn krafist annars. Þetta gerist þegar "ld-shared" tengilinn inniheldur samnýtt bókasafn sem eitt af inntakaskránni.

Þegar tengilinn kemur fram við slíkan árekstur þegar hann er tengdur sem ekki er hægt að flytja til, mun hann sjálfkrafa reyna að finna nauðsynlegt samnýtt bókasafn og láta það í tengilinn, ef það er ekki innifalið sérstaklega. Í slíku tilviki tilgreinir valkosturinn -rpath-hlekkur fyrsta sett framkvæmdarstjóra til að leita. Valmöguleikinn -rpath-hlekkur getur tilgreint röð nöfn skráa annaðhvort með því að tilgreina lista yfir nöfn sem eru aðskilin með dálkum eða með því að birtast margvíslega sinnum.

Þessi valkostur ætti að nota með varúð þar sem það fer yfir leitarslóðina sem kann að hafa verið erfitt saman í sameiginlegt bókasafn. Í slíkum tilfellum er hægt að nota ósjálfráða leitarslóð en afturkreistingur tengillinn myndi gera.

Tengillinn notar eftirfarandi leitarleiðir til að finna nauðsynlegar samnýttar bókasöfn.

1.

Allir framkvæmdarstjóra tilgreindir með -rpath-hlekkur valkosti.

2.

Allir framkvæmdarstjóra tilgreindir af -rpath valkostum. Munurinn á -rpath og -rpath-hlekkur er sú að framkvæmdarstjóra sem tilgreind er af -rpath valkostum er innifalinn í executable og notuð við afturkreistinguna, en -rpath-hlekkur valkosturinn er aðeins virkur á hlekkartíma . Það er aðeins fyrir innfæddur hlekkjari.

3.

Á ELF-kerfinu, ef valmöguleikar -rpath og "rpath-link" voru ekki notaðir skaltu leita að innihaldi umhverfisbreytu "LD_RUN_PATH". Það er aðeins fyrir innfæddur hlekkjari.

4.

Á SunOS, ef valið -rpath- valkosturinn var ekki notaður skaltu leita að einhverjum möppum sem eru tilgreindir með -L valkostum.

5.

Fyrir innfæddur hlekkur, innihald umhverfisbreytu "LD_LIBRARY_PATH".

6.

Fyrir innfæddur ELF-tengill er leitað á samskiptum í "DT_RUNPATH" eða "DT_RPATH" í sameiginlegu bókasafni fyrir samnýtt bókasöfn sem þarfnast. "DT_RPATH" færslurnar eru hunsaðar ef "DT_RUNPATH" færslur eru til.

7.

Sjálfgefnar möppur, venjulega / lib og / usr / lib .

8.

Fyrir innfæddur tengill á ELF-kerfi, ef skráin /etc/ld.so.conf er til staðar, þá er listi yfir möppur sem finnast í skránni.

Ef nauðsynlegt samnýtt bókasafn er ekki að finna mun hlekkurinn gefa út viðvörun og halda áfram með tengilinn.

-shluti

-Bshareable

Búðu til sameiginlegt bókasafn. Þetta er aðeins stutt á ELF, XCOFF og SunOS umhverfi. Á SunOS mun hlekkurinn sjálfkrafa búa til samnýtt bókasafn ef -e valkosturinn er ekki notaður og það eru ódefinðar tákn í tengilinn.

--sort-algengt

Þessi valkostur segir ld að raða sameiginlegum táknum eftir stærð þegar það setur þær í viðeigandi framleiðslusvið. Fyrst koma allir einir bætistáknin, þá öll tvö bæti, þá alla fjóra bæti, og þá allt annað. Þetta er til að koma í veg fyrir bil milli táknanna vegna aðlögunarmarka.

--Split-eftir-skrá [ stærð ]

Líkur á - flettu með þvíflytja en skapar nýtt framleiðslusvæði fyrir hverja innsláttarskrá þegar stærð er náð. stærð vanskil að stærð 1 ef ekki gefið.

--split-by-reloc [ telja ]

Reynir að búa til aukahluti í framleiðslulistanum þannig að enginn framleiðsla hluti í skránni inniheldur meira en telja flutning. Þetta er gagnlegt þegar búið er að búa til stórar flytjanlegar skrár til að hlaða niður í ákveðnar rauntímahurðir með COFF mótmæla skráarsniðinu; þar sem COFFcannot táknar meira en 65535 flytja í einum hluta. Athugaðu að þetta muni ekki virka með skráarsnið hlutum sem styðja ekki handahófskenntir. Tengillinn mun ekki skipta upp einstökum inntakssíðum til endurdreifingar, þannig að ef einn innsláttarþáttur inniheldur fleiri en töluflutninga mun ein framleiðsla hluti innihalda margar flutningar. telja vanskil að verðmæti 32768.

- tölur

Reikna og birta tölfræði um rekstur tengilinnsins, svo sem framkvæmdartíma og minni notkun.

--Traditional-snið

Fyrir nokkrum markmiðum er framleiðsla ld öðruvísi á einhvern hátt frá framleiðsla sumra tengla sem tengjast. Þessi skipta biður um ld að nota hefðbundna sniðið í staðinn.

Til dæmis, á SunOS, sameinar ld tvíteknar færslur í táknstrengatöflunni. Þetta getur dregið úr stærð framleiðsla skrár með fullri kembiforrit upplýsingar um meira en 30 prósent. Því miður, SunOS "dbx" forritið getur ekki lesið það forrit sem er að finna ("gdb" hefur engin vandræði). Snúningsskiptastillirinn segir ld að ekki sameina tvíteknar færslur.

- kafla-byrjun sectionname = org

Finndu hluti í framleiðslulistanum á algeru heimilisfangi sem gefinn er af org . Þú getur notað þennan möguleika eins oft og nauðsynlegt er til að finna margar köflum á stjórnalínunni. org verður að vera einn sextíu heil tala; Fyrir eindrægni með öðrum tenglum getur þú sleppt leiðandi 0x venjulega í tengslum við sexfaldastig gildi. Athugið: Það ætti ekki að vera hvítt bil á milli hlutnefndar , jafnréttismerkið (`` = '') og org .

-Tbss org

-Tdata org

-Ttext org

Notaðu org sem upphafsstað fyrir --- hvern og einn --- "bss", "gögn" eða "texti" hluti framleiðslugjaldsins. org verður að vera einn sextíu heil tala; Fyrir eindrægni með öðrum tenglum getur þú sleppt leiðandi 0x venjulega í tengslum við sexfaldastig gildi.

- dll-verbose

--verbose

Sýnið útgáfaarnúmerið fyrir ld og skráðu linker emulations studd. Sýna hvaða inntakaskrár geta og ekki er hægt að opna. Sýna tengilinnsforritið sem notað er af tengilinn.

- útgáfa- handrit = útgáfa-scriptfile

Tilgreindu heiti útgáfuhandrit til tengilinnsins. Þetta er venjulega notað þegar þú býrð til samnýtt bókasöfn til að tilgreina viðbótarupplýsingar um útgáfufyrirtækið fyrir bókasafnið sem er búið til. Þessi valkostur er aðeins þýðingarmikill á ELF-kerfum sem styðja samnýtt bókasöfn.

--vörn-algeng

Varið þegar sameiginlegt tákn er sameinuð með öðru algengu tákni eða með táknaskýringu. Unix linkers leyfa þessu nokkuð slæmt starf, en tenglar á sumum öðrum stýrikerfum gera það ekki. Þessi valkostur gerir þér kleift að finna hugsanleg vandamál frá því að sameina alheimsmerki. Því miður, sum C-bókasöfn nota þetta starf, þannig að þú gætir fengið nokkrar viðvaranir um tákn í bókasöfnum og í forritunum þínum.

Það eru þrjár tegundir af alþjóðlegum táknum, sýndar hér með C dæmi:

int i = 1;

Skilgreining, sem fer í upphafsgögnin í framleiðslulistanum.

utanaðkomandi

Óákveðinn tilvísun, sem úthlutar ekki plássi. Það verður að vera annaðhvort skilgreining eða algengt tákn fyrir breytu einhvers staðar.

ég er;

Algengt tákn. Ef það eru aðeins (einn eða fleiri) algeng tákn fyrir breytu, fer það í óendanlegu gagnasvæðinu í framleiðslulistanum. Tengillinn sameinar margar algengar tákn fyrir sömu breytu í eitt tákn. Ef þeir eru af mismunandi stærðum, þá velur það stærsta stærð. Tengillinn breytir sameiginlegt tákn í yfirlýsingu, ef skilgreining er á sömu breytu.

The -warn-sameiginlegur valkostur getur búið til fimm tegundir af viðvaranir. Hver viðvörun samanstendur af par af línum: fyrsta lýsir tákninu sem komið er fyrir og annað lýsir fyrra tákninu sem er sama nafnið. Eitt eða báðar tvö táknin verða algeng tákn.

1.

Beygja sameiginlegt tákn í tilvísun vegna þess að það er þegar skilgreining fyrir táknið.

(
): viðvörun: algengt af 'yfirgefið með skilgreiningu (): viðvörun: skilgreind hér

2.

Beygja sameiginlegt tákn í tilvísun vegna þess að síðari skilgreining á tákninu er upp. Þetta er það sama og í fyrra tilvikinu, nema að táknin sést í annarri röð.

(
): viðvörun: skilgreining á 'yfirleitt algeng (): viðvörun: algeng er hér

3.

Sameina sameiginlegt tákn með fyrri sameiginlegu tákninu.

(
): viðvörun: margfeldi algengt af (): viðvörun: fyrri algeng er hér

4.

Sameina sameiginlegt tákn með fyrri stærri algengum tákni.

(
): viðvörun: algengt af 'override by larger common (
): viðvörun: stærri algengt er hér

5.

Sameina sameiginlegt tákn með fyrra, minna algengt tákn. Þetta er það sama og í fyrra tilvikinu, nema að táknin sést í annarri röð.

(
): viðvörun: algengt af 'overriding minni algeng (
): viðvörun: minni algeng er hér

- varnarmenn

Varið ef einhverjar alþjóðlegu smiðirnir eru notaðar. Þetta er aðeins gagnlegt fyrir nokkra mótmælaskráarsnið. Fyrir snið eins og COFF eða ELF, getur hlekkurinn ekki greint notkun alþjóðlegra framkvæmdaaðila.

--vörn-margfeldi-gp

Varndu hvort margar alþjóðlegar músarviðmiðanir séu nauðsynlegar í framleiðslulistanum . Þetta er aðeins þýðingarmikill fyrir ákveðnar örgjörvur, eins og Alpha. Nánar tiltekið, sumir örgjörvum setja stór-metinn fastar í sérstökum kafla. Sérstakt skrá (alheimsvísirinn) bendir til miðja þessa kafla svo að hægt sé að hlaða fastar stöðugleika með grunnskrám miðað viðtakaham. Þar sem á móti í grunnskrár hlutfallslega háttur er fastur og tiltölulega lítill (td 16 bita) takmarkar þetta hámarksstærð fastfarsins. Þannig er í stórum forritum oft nauðsynlegt að nota margar alþjóðlegar vísbendingar gildi til þess að geta tekið á móti öllum mögulegum stöðlum. Þessi valkostur veldur því að viðvörun verði gefin út hvenær sem er.

- varið einu sinni

Aðeins varað einu sinni fyrir hvert óskilgreint tákn, frekar en einu sinni á einingu sem vísar til þess.

- varnarliður-taktur

Viðvörun ef heimilisfang framleiðslusviðs er breytt vegna samræmingar. Venjulega verður röðunin stillt af inntakssviði. Heimilisfangið verður aðeins breytt ef það er ekki tilgreint sérstaklega; það er, ef "deildir" stjórnin tilgreinir ekki upphafsstað fyrir hlutann.

- Hvar-skjalasafn

Fyrir hvert skjal sem nefnt er á stjórnarlínunni eftir valkostinum - hvolpur-skjalasafnið , er átt við hvert hlutaskrá í skjalasafninu í hlekknum, frekar en að leita í skjalasafninu fyrir nauðsynleg hlutaskrár. Þetta er venjulega notað til að breyta skjalasafninu í sameiginlegt bókasafn og þvinga hvert hlut að vera með í samnýttu bókasafni sem kemur fram. Þessi valkostur má nota meira en einu sinni.

Tvær athugasemdir þegar þú notar þennan valkost úr gcc: Í fyrsta lagi veit ekki gcc um þennan valkost, svo þú verður að nota -Wl, -whole-skjalasafnið . Í öðru lagi, gleymdu ekki að nota -Wl, -til-heild-skjalasafn eftir lista yfir skjalasafn vegna þess að gcc mun bæta við eigin lista yfir skjalasöfn á tengilinn þinn og þú vilt ekki að þessi fána hafi áhrif á þau líka.

--wrap tákn

Notaðu umbúðir virka fyrir tákn . Einhver óskilgreind tilvísun í tákn verður leyst í "__ wrap_symbol". Einhver óskilgreind tilvísun í "__real_symbol" verður leyst í tákn .

Þetta er hægt að nota til að búa til umbúðir fyrir kerfisaðgerð. Umbúðirnar ættu að vera kallaðir "__wrap_symbol". Ef það vill hringja í kerfisaðgerðina ætti það að kalla "__ real_symbol".

Hér er léttvæg dæmi:

ógilt * __wrap_malloc (int c) {printf ("malloc kallað með% ld \ n", c); skila __real_malloc (c); }

Ef þú tengir aðra kóða með þessari skrá með - wrap malloc , þá munu öll símtöl til "malloc" kalla aðgerðina "__wrap_malloc" í staðinn. Símtalið til "__real_malloc" í "__wrap_malloc" mun kalla alvöru "malloc" virknina.

Þú gætir líka viljað veita "__real_malloc" virka, þannig að tenglar án þess að -wrap valkosturinn muni ná árangri. Ef þú gerir þetta, ættir þú ekki að setja skilgreininguna á "__ real_malloc" í sömu skrá sem "__wrap_malloc"; ef þú gerir það, getur þjónninn leyst símtalið áður en tengilinn hefur möguleika á að setja það í "malloc".

- nýjan-nýtt dtags

--disable-new-dtags

Þessi hlekkur getur búið til nýja dynamic tags í ELF. En eldri ELF-kerfin skilja ekki þá. Ef þú tilgreinir - nýjan-nýtt-dtags , verða virku merkin búin til eftir þörfum. Ef þú tilgreinir --disable-new-dtags , verður ekki búið til nýjum dynamic merkjum. Sjálfgefið eru nýju dynamic merkin ekki búin til. Athugaðu að þessi valkostur er aðeins í boði fyrir ELF kerfi.

The i386 PE tengillinn styður hlutinn -shared , sem veldur því að framleiðsla sé virk tengd bókasafn (DLL) í stað venjulegs executable. Þú ættir að nefna framleiðsluna "* .dll" þegar þú notar þennan valkost. Að auki styður tengillinn fulla staðalinn "* .def" skrárnar, sem kunna að vera tilgreindir á tengiliðalistanum eins og hlutaskrá (í raun ætti það að vera fyrirfram skjalasafn sem það flytur út tákn frá, til að tryggja að þeir fái tengla í, bara eins og venjuleg mótmæla skrá).

Til viðbótar við valkostina sem eru sameiginleg við öll markmið, styðja i386 PE tengillinn til viðbótar stjórnunarvalkostir sem eru sérstaklega við i386 PE markmiðið. Valkostir sem taka gildi geta verið aðskildir frá gildum þeirra með því að nota pláss eða jafnréttismerki.

--add-stdcall-alias

Ef það er gefið, verða tákn með stimplun viðskeyti (@ nn ) flutt út eins og er og einnig með viðskeyti sem er fjarlægt.

--base- skráarskrá

Notaðu skrá sem nafn á skrá þar sem hægt er að vista grunnföng allra flutninga sem þarf til að búa til DLLs með dlltool .

- dll

Búðu til DLL í stað venjulegs executable. Þú getur einnig notað -shared eða tilgreint "LIBRARY" í tilteknu ".def" skrá.

--anlegur-stðfellur-festa

--disable-stdcall-fixup

Ef tengillinn finnur tákn sem það getur ekki leyst, mun það reyna að gera `` loðinn tengingu '' með því að leita að öðru skilgreindu tákni sem er ólíkt aðeins á formi heitið (cdecl vs stdcall) og mun leysa það tákn með því að tengja til leiksins. Til dæmis gæti ódefint táknið "_foo" verið tengt við aðgerðina "_foo @ 12" eða óskilgreint tákn "_bar @ 16" gæti tengst virkni "_bar". Þegar tengillinn gerir þetta prentar það viðvörun, þar sem það ætti að hafa venjulega ekki tengst, en stundum kann að þurfa að flytja inn bókasöfn, sem myndast frá þriðja aðila, til þess að þessi eiginleiki sé nothæfur. Ef þú tilgreinir - upptökuskilaboð , er þessi aðgerð að fullu virk og viðvaranir eru ekki prentaðar. Ef þú tilgreinir - disable-stdcall-fixup , þá er þessi aðgerð óvirk og slíkar misræmi teljast vera villur.

- Útflutningur-allur-tákn

Ef gefið er öll alþjóðleg tákn í hlutum sem notuð eru til að byggja upp DLL, flutt út af DLL. Athugaðu að þetta er sjálfgefið ef annars væri ekki útflutt tákn. Þegar tákn eru flutt flutt út með DEF skrám eða óbeint flutt út með aðgerðareiginleikum er sjálfgefin að flytja ekki neitt annað nema að þessi valkostur sé gefinn. Athugaðu að táknin "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" og "impure_ptr" verða ekki flutt sjálfkrafa. Einnig verða tákn sem eru flutt inn frá öðrum DLL-skrám ekki flutt aftur, né heldur tákn sem tilgreina innri skipulag DLL, eins og þær sem byrja á "_head_" eða endar með "_iname". Þar að auki verða engar tákn frá "libgcc", "libstd ++", "libmingw32" eða "crtX.o" flutt út. Tákn sem byrja á "__rtti_" eða "__builtin_" verða ekki fluttar til að hjálpa með C ++ DLLs. Að lokum er víðtæka listi yfir cygwin-einkatölvur sem ekki eru fluttar út (augljóslega gildir þetta um hvenær DLLs byggja á cygwin markmiðum).

Þessar cygwin-útilokar eru: "_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_premain2" "og" umhverfi ".

--exclude-tákn tákn , tákn , ...

Tilgreinir lista yfir tákn sem ekki ætti að flytja sjálfkrafa út. Táknin geta verið afmarkuð með kommum eða dálkum.

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

Tilgreinir lista yfir safnskrár þar sem ekki ætti að flytja út tákn sjálfkrafa. Heiti bókasafnsins má afmarka með kommum eða dálkum. Tilgreina "--exclude-libs ALL" útilokar tákn í öllum safnskráðum frá sjálfvirkum útflutningi. Tákn sem eru sérstaklega skráðir í .def skrá eru fluttar út, óháð þessum valkosti.

--File-röðun

Tilgreindu skráarsamsetningu. Sections í skránni munu alltaf byrja á offsets skrá sem eru margfeldi af þessu númeri. Þetta vantar 512.

- lágmarkssjóður

Leigusamningur , skuldbinda sig

Tilgreina magn af minni til að panta (og mögulega skuldbinda) til að nota sem hrúga fyrir þetta forrit. Sjálfgefið er 1Mb áskilið, 4K framið.

- myndunargildi

Notaðu gildi sem grunn heimilisfang áætlunarinnar eða dll. Þetta er lægsta minni staðsetningin sem verður notuð þegar forritið þitt eða dll er hlaðið. Til að draga úr þörfinni á að flytja og bæta árangur dlls þín, hver ætti að hafa einstakt grunnfang og ekki skarast á öðrum dlls. Sjálfgefið er 0x400000 fyrir executables og 0x10000000 fyrir dlls.

--kill-at

Ef það er gefið, verður stafræna viðskeyti (@ nn ) tekin úr táknum áður en þau eru flutt út.

- stærri-mynd-útgáfa gildi

Setur helstu fjölda `` myndarútgáfu ''. Sjálfgefin 1.

- stærri-os-útgáfa gildi

Setur helstu númer `` os útgáfunnar ''. Sjálfgefin 4.

- gildi stórra undirkerfa-útgáfu

Setur helstu númer `` undirkerfisútgáfu ''. Sjálfgefin 4.

- gildi minniháttar-mynd-útgáfu

Stillir minniháttar númerið af `` ímynd útgáfunni ''. Sjálfgefið 0.

- gildi -minor-os-útgáfa

Setur minniháttar númer `` os útgáfa ''. Sjálfgefið 0.

- gildi minnihluta-undirkerfis-útgáfu

Stillir minniháttar númerið af `` undirkerfi útgáfunni ''. Sjálfgefið 0.

--útgáfa-def skrá

Tengillinn mun búa til skráarsniðið sem mun innihalda DEF skrá sem samsvarar DLL sem tengilinn er að búa til. Þessi DEF skrá (sem ætti að vera kölluð "* .def") má nota til að búa til innflutningsbókasafn með "dlltool" eða má nota sem tilvísun í sjálfkrafa eða óbeint flutt tákn.

- út-implib skrá

Tengillinn mun búa til skráarsniðið sem mun innihalda innflutningsbib sem samsvarar DLL sem tengillinn er að búa til. Þessi innflutningur lib (sem ætti að vera kallað "* .dll.a" eða "* .a" má nota til að tengja viðskiptavini við DLL-búnaðinn. Þessi hegðun gerir það mögulegt að sleppa sérstaka "dlltool" innflutningsbókasafnsköpunarþrep.

--anlegur-sjálfvirkur-mynd-undirstaða

Veldu sjálfkrafa myndgrunninn fyrir DLL-skrár, nema einn sé tilgreindur með því að nota "-image-base" rifrildi. Með því að nota kjötkássa sem myndast úr dllname til að búa til einstaka myndaratriði fyrir hverja DLL, er hægt að koma í veg fyrir árekstra og flutning í minni sem hægt er að tefja forrit framkvæmd.

--disable-sjálfvirkt-mynd-undirstaða

Búðu til ekki sjálfkrafa einstaka myndaröð. Ef það er engin notandi tilgreindur myndgrunnur ("--image-base") þá notaðu sjálfgefið vettvang.

--dll-search-forskeyti strengur

Þegar tenging er virk við dll án innflutningsbókasafns skaltu leita að " .dll" frekar en "lib .dll". Þessi hegðun gerir auðvelt að greina á milli DLLs byggð fyrir hin ýmsu `` undirflokka '': innfæddur, cygwin, jouin, pw osfrv. Til dæmis nota cygwin DLLs venjulega "--dll-search-prefix = cyg".

- sjálfvirkt innflutningur

Gerðu háþróaðri tengingu á "_symbol" við "__imp__symbol" fyrir DATA innflutning frá DLLs, og búðu til nauðsynlegan dunking tákn þegar þú byggir innflutningsbókasöfn með þessum DATAexports. Þetta mun almennt 'bara virka' --- en stundum getur þú séð þessi skilaboð:

"breytileg" 'er ekki hægt að flytja sjálfkrafa inn. Vinsamlegast lestu skjölin fyrir ld's "--enable-auto-import" til að fá nánari upplýsingar. "

Þessi skilaboð eiga sér stað þegar einhver (undir) tjáning nálgast heimilisfang sem að lokum er gefið með summanum af tveimur stöðlum (Win32 innflutningstöflur leyfðu aðeins einu). Tilfelli þar sem þetta getur átt sér stað eru aðgangur að meðlimum sviðum uppbyggingarbreytur sem eru flutt inn frá DLL, auk þess að nota fasta vísitölu í fylkisbreytu sem er flutt inn frá DLL. Allir margvíslegir breytur (fylki, uppbyggingar, langur lengi osfrv.) Geta kallað fram þetta villuskilyrði. Hins vegar, án tillits til nákvæmrar gagnategundar af ásættanlegu útfluttum breytu, mun ld alltaf uppgötva það, gefa út viðvörunina og hætta.

Það eru nokkrar leiðir til að takast á við þessa erfiðleika, án tillits til gagna gerð útfluttrar breytu:

Ein leiðin er að nota - reipi-afturkreistingur-gervi-rofi. Þetta skilur það verkefni að breyta tilvísunum í viðskiptavinakóðanum þínum fyrir afturkreistingur umhverfi, þannig að þessi aðferð virkar aðeins þegar afturkreistingur environtment styður þessa eiginleika.

Önnur lausnin er að þvinga einn af 'stöðunum' til að vera breytilegt --- það er óþekkt og óvirkanlegt á samsettan tíma. Fyrir raðgreinar eru tveir möguleikar: a) gera vísitöluna (heimilisfang á array) breytu, eða b) gera "fast" vísitölu breytu. Þannig:

ytri gerð extern_array []; extern_array [1] -> {rokgjarn tegund * t = extern_array; t [1]}

eða

ytri gerð extern_array []; extern_array [1] -> {rokgjarnt int t = 1; extern_array [t]}

Fyrir uppbyggingar (og flest önnur margvísleg gögn gagna) er eina valkosturinn að gera uppbygginguna (eða langan langan eða ...) breytu:

ytri uppbyggingu utanaðkomandi; extern_struct.field -> {rokgjörn struct s * t = & extern_struct; t-> reit}

eða

utan lengi lengi extern_ll; extern_ll -> {rokgjarn langur langur * local_ll = & extern_ll; * local_ll}

Þriðja aðferðin við að takast á við þessa erfiðleika er að yfirgefa sjálfvirkt innflutning fyrir brotið táknið og merkja það með "__declspec (dllimport)". Hins vegar í reynd sem krefst þess að nota samhliða tíma #defines til að gefa til kynna hvort þú ert að byggja upp DLL, byggja upp viðskiptavinakóða sem mun tengjast DLL, eða bara byggja / tengja við truflanir bókasafns. Þegar þú velur val á milli hinna ýmsu aðferða við að leysa "bein heimilisfang með stöðugt móti" vandamál, ættir þú að íhuga dæmigerða notkun heimsins í heiminum:

Upprunalega:

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

Lausn 1:

--foo.h extern int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {/ * Þessi lausn er fyrir win32 og cygwin; ekki "bjartsýni" * / rokgjarnt int * parr = ar; printf ("% d \ n", parr [1]); }

Lausn 2:

- foo.h / * Athugið: sjálfvirkt útflutningur er gert ráð fyrir (nei __declspec (dllexport)) * / #if (skilgreint (_WIN32) || skilgreint (__ CYGWIN__)) && \! (skilgreint (FOO_BUILD_DLL) || skilgreint (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c #include "foo.h" ógilt aðal (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Fjórða leiðin til að koma í veg fyrir þetta vandamál er að endurkóða bókasafnið þitt til að nota hagnýtt tengi frekar en gagnasamskipti fyrir breytileg breytur (td set_foo () og get_foo () aðgangsstillingar ).

--disable-auto-import

Ekki reyna að gera sophisticalted tengingu "_symbol" við "__imp__symbol" fyrir DATAimports frá DLLs.

--anlegur-afturkreistingur-gervi-flutningur

Ef kóðinn inniheldur lykilorð sem lýst er í - til slíkra gagna í viðskiptavinarkóðanum þínum.

--disable-afturkreistingur-gervi-flutningur

Ekki búa til gervi flytja fyrir ekki-núll á móti DATA innflutningi frá DLLs. Þetta er sjálfgefið.

--anlegur-auka-pe-kemba

Sýna frekari upplýsingar um straumspilla sem tengjast sjálfvirkan innflutningstákn.

- kafla-röðun

Stillir hlutastillinguna. Sections í minni mun alltaf byrja á heimilisföngum sem eru margfeldi af þessu númeri. Staðalfrávik 0x1000.

-

- Stöðugleiki , skuldbinda sig

Tilgreina magn af minni til að panta (og mögulega skuldbinda) til að nota sem stafla fyrir þetta forrit. Sjálfgefið er 2Mb áskilið, 4K framið.

- kerfi sem

- kerfi sem : meiriháttar

- kerfi sem : meiriháttar . minniháttar

Tilgreinir undirkerfið sem forritið þitt mun framkvæma. Lagaleg gildi sem eru "innfæddur", "Windows", "hugga" og "posix". Þú getur valið að setja undirkerfisútgáfan líka.

Mikilvægt: Notaðu stjórn mannsins ( % maður ) til að sjá hvernig stjórn er notuð á tölvunni þinni.