Linux / UNIX Kòmandman: Id

NON

ld - Sèvi ak LD , linker GNU la

SYNOPSIS

ld [ opsyon ] objfile ...

DESKRIPSYON

ld konbine yon kantite objè ak dosye achiv, deplase done yo epi yo lyen moute referans senbòl. Anjeneral etap nan dènye nan konpile yon pwogram se kouri ld .

ld aksepte dosye Linker Command Language ekri nan yon superset nan AT & T a Link Editè Link Editè lang, bay bay kontwòl eksplisit ak total sou pwosesis la ki lye ak.

Paj nonm sa a pa dekri lang nan lòd; gade antre ld nan "info", oswa ld a manyèl: GNU linker a, pou detay konplè sou lang nan lòd ak sou lòt aspè nan LinkerGNU la.

Sa a vèsyon ld itilize bi jeneral BFD bibliyotèk yo opere sou dosye objè. Sa a pèmèt ld li, konbine, ak ekri dosye objè nan anpil diferan fòma --- pou egzanp, COFF oswa "a.out". Diferan fòma ka lye ansanm yo pwodwi nenpòt ki kalite ki disponib nan dosye objè.

Akote de fleksibilite li yo, linker GNU la pi itil pase lòt linkers nan bay enfòmasyon dyagnostik. Linkers anpil abandone ekzekisyon imedyatman lè rankontre yon erè; nenpòt lè sa posib, ld ap kontinye egzekite, ki pèmèt ou idantifye lòt erè (oswa, nan kèk ka, yo ka resevwa yon dosye pwodiksyon nan malgre nan erè a).

GNU linker ld a vle di pou kouvri yon pakèt domèn sitiyasyon, epi pou yo konpatib ke posib ak lòt linkers. Kòm yon rezilta, ou gen anpil chwa pou kontwole konpòtman li yo.

OPSYON

Linker a sipòte yon multitude nan opsyon liy-liy , men nan pratik reyèl kèk nan yo yo te itilize nan nenpòt kontèks an patikilye. Pou egzanp, yon souvan itilize nan ld se konekte estanda UNIX objè dosye sou yon estanda, sipòte sistèm Unix . Sou sistèm sa a, fè yon lyen "hello.o":

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

Sa a di ld yo pwodwi yon dosye rele pwodiksyon kòm rezilta nan ki lye ak dosye "/lib/crt0.o" ak "hello.o" ak bibliyotèk la "libc.a", ki pral soti nan recherche rechèch la estanda. (Gade diskisyon opsyon -l ki anba la a.)

Gen kèk nan opsyon yo lòd-liy ld ka espesifye nan nenpòt pwen nan liy lan lòd. Sepandan, opsyon ki gen rapò ak dosye, tankou -l oswa -T , lakòz dosye a yo dwe li nan pwen a nan ki opsyon a parèt nan liy lan lòd, relatif nan dosye yo objè ak lòt opsyon dosye. Repete opsyon ki pa-dosye ak yon lòt agiman ap swa pa gen okenn efè plis, oswa pase sou desizyon anvan yo (sa yo plis nan bò gòch la sou liy lan bay lòd) nan opsyon sa a. Opsyon ki ka siyifikativman espesifye plis pase yon fwa yo note nan deskripsyon ki anba yo.

Agiman ki pa Peye-opsyon yo se dosye objè oswa achiv ki dwe lye ansanm. Yo ka swiv, anvan, oswa yo dwe melanje nan ak opsyon liy-liy, eksepte ke yon agiman dosye objè pa ka mete ant yon opsyon ak agiman li yo.

Anjeneral se linker la envoke ak omwen yon dosye objè, men ou ka presize lòt fòm nan dosye opinyon binè lè l sèvi avèk -L , -R , ak lang nan lòd script. Si pa gen okenn dosye opinyon binè nan tout yo espesifye, linker a pa pwodwi nenpòt pwodiksyon, ak pwoblèm mesaj la Pa gen dosye opinyon .

Si linker a pa ka rekonèt fòma a nan yon dosye objè, li pral asime ke li se yon script linker. Yon script ki espesifye nan fason sa a ogmante script la linker prensipal yo itilize pou lyen an (swa script la linker default oswa yon sèl la espesifye lè l sèvi avèk- T ). Karakteristik sa a pèmèt linker a konekte kont yon dosye ki parèt yon objè oswa yon achiv, men aktyèlman senpleman defini kèk valè senbòl, oswa itilize "antre" oswa "gwoup" chaje lòt objè yo. Remake byen ke espesifye yon script nan fason sa a senpleman ogmante script la linker prensipal; sèvi ak opsyon nan -T ranplase script la linker default antyèman.

Pou opsyon ki gen non yo se yon lèt sèl, opsyon agiman yo dwe swa swiv lèt la opsyon san yo pa entèsan blanchi, oswa yo dwe bay kòm agiman separe imedyatman apre opsyon ki mande pou yo.

Pou opsyon ki gen non yo lèt miltip, swa yon sèl priz oswa de ka vini anvan non an opsyon; pou egzanp, -trace-senbòl ak - tras-senbòl yo ekivalan. Remak - gen yon eksepsyon nan règ sa a. Opsyon lèt miltip ki kòmanse ak yon ka pi ba 'o' kapab fèt sèlman preceeded pa de tirè. Sa a se diminye konfizyon ak opsyon nan -o . Se konsa, pou egzanp -omagic kouche non an dosye pwodiksyon majik Lè nou konsidere ke --omagic kouche drapo a NMAGIC sou pwodiksyon an.

Agiman nan opsyon miltip-lèt yo dwe swa separe de non an opsyon pa yon siy egal, oswa yo dwe bay kòm agiman separe imedyatman apre opsyon ki mande pou yo. Pou egzanp, - traktè-senbòl foo ak - traktè-senbòl = foo yo ekivalan. Abbreviations inik nan non yo nan opsyon miltip-lèt yo aksepte.

Remak - si linker la ap envoke endirèkteman, atravè yon chofè konpilateur (egzanp gcc ) Lè sa a, tout opsyon liy opsyon liy yo ta dwe prefiks pa -Wl, (oswa kèlkeswa sa ki apwopriye pou chofè a konpilateur patikilye) tankou sa a:

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

Sa a enpòtan, paske otreman pwogram nan chofè konpilateur ka an silans gout opsyon ki linker, sa ki lakòz yon lyen move.

Isit la se yon tab nan liy lan lòd liy jenerik aksepte pa linker a GNU:

-a mo kle

Opsyon sa a sipòte pou HP / UX konpatibilite. Agiman an mo kle dwe youn nan achiv la strings , pataje , oswa default . -Arakte se fonksyonèlman ekivalan a- bostatik , ak de lòt mo kle yo fonksyonèlman ekivalan a- dinamik . Opsyon sa a ka itilize nenpòt kantite fwa.

- Yon achitekti

- Achitekti = achitekti

Nan lage aktyèl la nan ld , opsyon sa a se itil sèlman pou fanmi an Intel 960 nan achitekti. Nan ki konfigirasyon ld , agiman achitekti a idantifye achitekti an patikilye nan 960 fanmi an, pèmèt kèk pwoteksyon ak modifye chemen achiv-bibliyotèk rechèch la.

Divilgasyon lavni nan ld ka sipòte fonctionnalités menm jan an pou fanmi lòt achitekti.

-b opinyon-fòma

- fòma = opinyon-fòma

ld ka configuré sipòte plis pase yon sèl kalite dosye objè. Si ld ou configuré fason sa a, ou ka itilize- b opsyon a presize fòma a binè pou opinyon objè dosye ki swiv opsyon sa a sou liy lan bay lòd. Menm lè ld configuré sipòte fòma objè altènatif, ou pa anjeneral bezwen presize sa a, kòm ld yo ta dwe configuré yo atann kòm yon fòma D 'default fòma ki pi abityèl sou chak machin. Dosye-fòma se yon kòd tèks, non an nan yon fòma an patikilye ki sipòte pa bibliyotèk yo BFD. (Ou ka lis fòma yo binè ki disponib ak objdump -i .)

Ou ka vle itilize opsyon sa a si ou ap konekte dosye ak yon fòma binè dwòl. Ou ka itilize tou -b pou chanje fòma eksplisitman (lè ki lye ak dosye objè nan fòma diferan), pa enkli -b opinyon-fòma anvan chak gwoup nan dosye objè nan yon fòma an patikilye.

Fòma a default se te pran nan varyab anviwònman an "GNUTARGET".

Ou kapab tou defini fòma a opinyon ki sòti nan yon script, lè l sèvi avèk lòd "TARGET";

-c MRI-commandfile

- mri-script = MRI-commandfile

Pou konpatibilite ak linkers ki te pwodwi pa MRI, ld aksepte dosye script ki ekri nan yon lòt, lòd lòd restriksyon, ki dekri nan seksyon MRI Compatible Script Files nan dokiman GNU ld. Prezante dosye script MRI ak opsyon -c la ; sèvi ak opsyon nan -T nan kouri Scripts linker ekri nan lang lan script jeneral- ld scripting. Si MRI-cmdfile pa egziste, ld sanble pou li nan repèrtwar ki espesifye nan nenpòt ki -L opsyon.

-d

-dc

-dp

Opsyon twa sa yo ekivalan; plizyè fòm yo sipòte pou konpatibilite ak lòt linkers. Yo asiyen espas senbòl komen menm si se yon dosye pwodiksyon deplase ki espesifye (ak -r ). Kòmandman script la "FORCE_COMMON_ALLOCATION" gen efè a menm.

-e antre

--entry = antre

Sèvi ak antre kòm senbòl la eksplisit pou ekzekisyon kòmansman nan pwogram ou, olye ke pwen an antre default. Si pa gen senbòl yo rele antre , linker a pral eseye parse antre kòm yon nimewo, epi sèvi ak sa kòm adrès la antre (nimewo a ap entèprete nan baz 10; ou ka sèvi ak yon dirijan 0x pou baz 16, oswa yon dirijan 0 pou baz 8).

-E

- ekspòte-dinamik

Lè y ap kreye yon ègzotik dinamik lye, ajoute tout senbòl nan tab la senbòl dinamik. Tab la senbòl dinamik se seri a nan senbòl ki yo vizib nan objè dinamik nan tan kouri.

Si ou pa sèvi ak opsyon sa a, tab la senbòl dinamik pral nòmalman genyen sèlman sa yo senbòl ki gen referans pa kèk objè dinamik mansyone nan lyen an.

Si ou itilize "dlopen" chaje yon objè dinamik ki bezwen refere tounen nan senbòl yo defini nan pwogram lan, olye ke kèk lòt objè dinamik, Lè sa a, ou pral pwobableman bezwen sèvi ak opsyon sa a lè ki lye ak pwogram nan tèt li.

Ou kapab tou itilize script la vèsyon an kontwole sa ki senbòl yo ta dwe ajoute nan tab la senbòl dinamik si fòma a pwodiksyon sipòte li. Al gade nan deskripsyon an - script -version nan @ ref {VERSION}.

-EB

Link objè gwo-endyen. Sa a afekte fòma a pwodiksyon default.

-EL

Link objè ti kras-endyen. Sa a afekte fòma a pwodiksyon default.

-f

- non

Lè w kreye yon objè ELF pataje, mete jaden an DT_AUXILIARY entèn nan non an espesifye. Sa a di linker dinamik ki tab la senbòl nan objè a pataje yo ta dwe itilize kòm yon filtè oksilyè sou tab la senbòl nan non an objè Pataje.

Si ou pita konekte yon pwogram kont sa a objè filtre, lè sa a, lè ou kouri pwogram nan, linker dinamik la pral wè jaden an DT_AUXILIARY. Si linker dinamik la rezoud nenpòt senbòl soti nan objè a filtre, li pral premye tcheke si gen yon definisyon nan non an objè pataje. Si gen yon sèl, li pral itilize olye pou yo definisyon an nan objè a filtre. Non objè pataje a pa bezwen egziste. Se konsa, yo ka non an objè pataje dwe itilize bay yon aplikasyon altènatif nan sèten fonksyon, petèt pou debogaj oswa pou pèfòmans machin espesifik.

Opsyon sa a ka espesifye plis pase yon fwa. Dosye DT_AUXILIARY yo pral kreye nan lòd la nan kote yo parèt sou liy lan bay lòd.

-F non

- filtre non

Lè w kreye yon objè ELF pataje, mete entèn DT_FILTER jaden an nan non an espesifye. Sa a di linker dinamik ki tab la senbòl nan objè a pataje ki te kreye yo ta dwe itilize kòm yon filtre sou tab la senbòl nan non an objectif pataje.

Si ou pita konekte yon pwogram kont objè filtre, lè sa a, lè ou kouri pwogram nan, linker dinamik la pral wè jaden an DT_FILTER. Linker dinamik la pral rezoud senbòl selon tab la senbòl nan objè a filtre kòm dabitid, men li pral aktyèlman ap mennen nan definisyon yo te jwenn nan non an objè pataje. Se konsa, ka objè a filtre dwe itilize yo chwazi yon subset nan senbòl yo bay nan non an objè.

Gen kèk linker ki pi gran yo itilize opsyon nan -F nan tout yon outil pou konpilasyon pou espesifye objè-dosye fòma pou tou de opinyon ak pwodiksyon objè dosye. Linker GNU a sèvi ak lòt mekanis pou objektif sa a: -b , -format , opsyon- fòma , "TARGET" lòd la nan Scripts linker, ak varyab "GNUTARGET" anviwònman an. Linker GNU a pral inyore opsyon -F lè pa kreye yon objè ELF pataje.

non-non

Lè w kreye yon objè ègzèkutabl oswa pataje ELF, rele NON lè objè a ègzèkutabl oswa pataje ap chaje, pa mete DT_FINI nan adrès fonksyon an. Pa default, linker a sèvi ak "_fini" kòm fonksyon an yo rele.

-g

Ignore. Bay konpatibilite ak lòt zouti.

-G valè

- Gpsize = valè

Mete gwosè a maksimòm objè yo dwe optimize lè l sèvi avèk enskri GP a gwosè . Sa a se sèlman siyifikatif pou fòma dosye objè tankou MIPS ECOFF ki sipòte mete objè gwo ak ti nan seksyon diferan. Sa a se inyore pou lòt fòma dosye objè.

-h non

-soname = non

Lè w kreye yon objè ELF pataje, mete jaden an DT_SONAME entèn nan non an espesifye. Lè yon ègzèkutabl ki lye avèk yon objè pataje ki gen yon jaden DT_SONAME, Lè sa a, lè ègzèkutabl la ap kouri lyen ki dinamik ap eseye chaje objè a pataje espesifye pa jaden an DT_SONAME olye ke lè l sèvi avèk non an dosye bay linker la.

-i

Fè yon lyen incrémentielle (menm jan ak opsyon -r ).

-Nan non

Lè w kreye yon objè ègzèkutabl oswa pataje ELF, rele non lè egzekite oswa pataje objè a chaje, pa mete DT_INIT nan adrès fonksyon an. Pa default, linker a sèvi ak "_init" kòm fonksyon an yo rele.

-l achiv

--library = achiv

Add achiv dosye achiv nan lis la nan dosye ki genyen lyen. Opsyon sa a ka itilize nenpòt kantite fwa. ld pral fè rechèch sou lis-li yo pou evènman nan "libarchive.a" pou chak achiv espesifye.

Sou sistèm ki sipòte bibliyotèk yo pataje, ld ka rechèch tou pou bibliyotèk ki gen ekstansyon lòt pase ".a". Espesyalman, sou ELF ak SunOS sistèm yo, ld ap chèche yon anyè pou yon bibliyotèk ki gen yon ekstansyon ".Se konsa" anvan ou chache pou youn ak yon ekstansyon ".a". Pa konvansyon, yon ".so" ekstansyon endike yon bibliyotèk pataje.

Linker a ap chèche yon achiv sèlman yon fwa, nan kote a kote li espesifye sou liy lan lòd. Si achiv la defini yon senbòl ki te endefini nan kèk objè ki parèt devan achiv la sou liy lan bay lòd, linker a ap gen ladan dosye ki apwopriye yo (yo) soti nan achiv la. Sepandan, yon senbòl endefini nan yon objè parèt pita sou liy lan bay lòd pa pral lakòz linker nan rechèch achiv la ankò.

Al gade nan - ( opsyon pou yon fason yo fòse linker nan rechèch achiv plizyè fwa.

Ou ka lis menm achiv la plizyè fwa sou liy lan lòd.

Sa a ki kalite chache achiv se estanda pou UNIX linkers. Sepandan, si ou ap itilize ld onAIX, sonje ke li diferan de konpòtman nan linker AIX la.

-L searchdir

--Library-path = searchdir

Add searchdir chemen nan lis la nan chemen ki ld pral fè rechèch pou bibliyotèk achiv ak Scripts kontwòl ld . Ou ka itilize opsyon sa a nenpòt ki kantite fwa. Repèrtwar yo yo fouye nan lòd la nan kote yo yo espesifye sou liy lan bay lòd. Répertoires ki espesifye sou liy la bay lòd yo fouye anvan default repèrtwar yo default. Tout -L opsyon aplike nan tout -l opsyon, kèlkeswa lòd la nan ki opsyon yo parèt.

Si searchdir kòmanse ak "=", Lè sa a, "=" ap ranplase pa prefiks a sysoot , yon chemen espesifye lè linker a configuré.

Mete nan default nan chemen fouye (san yo pa espesifye ak- L ) depann sou ki emulation mòd ld ap itilize, ak nan kèk ka tou sou ki jan li te configuré.

Chemen yo kapab espesifye nan yon lyen lyen tou avèk "SEARCH_DIR" lòd la. Repèrtwar espesifye nan fason sa a yo fouye nan pwen an nan ki script la linker parèt nan liy lan lòd.

-m emulation

Emulation linker a emulation . Ou ka lis emulation ki disponib yo ak opsyon yo --verbose oswa -V .

Si opsyon -m pa itilize, emulation an pran nan varyab anviwònman "LDEMULATION", si sa defini.

Sinon, emulation nan default depann sou ki jan linker a te configuré.

-M

--print-kat jeyografik

Ekri yon kat jeyografik lyen nan pwodiksyon estanda a. Yon kat jeyografik lyen bay enfòmasyon sou lyen an, ki gen ladan sa ki annapre yo:

*

Ki kote objè dosye ak senbòl yo trase nan memwa.

*

Ki jan komen senbòl yo resevwa lajan.

*

Tout manm achiv yo enkli nan lyen an, ak yon mansyone nan senbòl la ki te lakòz manm nan achiv yo dwe pote.

-n

--nmagik

Fèmen aliyman paj seksyon, epi make pwodiksyon an kòm "NMAGIC" si sa posib.

-N

--omagic

Mete seksyon tèks ak done yo pou yo ka lizib ak ekri. Epitou, pa fè paj-aliyman segman done, ak enfim ki lye ak kont bibliyotèk pataje yo. Si fòma pwodiksyon an sipòte UNIX style majik, make pwodiksyon an kòm "OMAGIC".

- pa-omagic

Opsyon sa a negate pi fò nan efè yo nan -N opsyon an. Li etabli seksyon tèks la pou l li-sèlman, epi fòs segman done yo pou paj-aliyen. Remak - opsyon sa a pa pèmèt ki lye ak kont bibliyotèk pataje. Sèvi ak -Bdynamik pou sa.

-a pwodiksyon

--output = pwodiksyon

Sèvi ak pwodiksyon kòm non an pou pwogram lan ki te pwodwi pa ld ; si opsyon sa a pa espesifye, non an a.out itilize pa default. Ekzanpsyon script "OUTPUT" la ka presize non dosye fichye a.

-O nivo

Si nivo a se yon valè nimerik ki pi konsekan pase zewo ld optimize pwodiksyon an. Sa a ta ka pran siyifikativman pi long ak Se poutèt sa pwobableman ta dwe sèlman ap pèmèt pou binè final la.

-q

--emit-relocs

Kite seksyon demenajman ak sa ki nan exececutables totalman lye. Post lyen analiz ak zouti optimize ka bezwen enfòmasyon sa a yo nan lòd yo fè kòrèk modifikasyon nan ègzèkutabl. Sa a rezilta nan pi gwo ègzèkutabl.

Opsyon sa a se kounye a sèlman sipòte sou tribin ELF.

-r

- relocateable

Jenere pwodiksyon rsokajabl --- sa vle di, jenere yon dosye pwodiksyon ki ka nan vire sèvi kòm opinyon ld . Sa a se souvan yo rele pasyèl ki lye ak . Kòm yon efè segondè, nan anviwònman ki sipòte estanda UNIX majik, opsyon sa a tou kouche nimewo majik dosye pwodiksyon an nan "OMAGIC". Si opsyon sa a pa espesifye, se yon dosye absoli ki pwodui. Lè lye ak pwogram C ++, opsyon sa a pa pral rezoud referans sou konstrukteur; fè sa, sèvi ak -Ur .

Lè yon dosye opinyon pa gen fòma a menm jan ak dosye a pwodiksyon, lyen ki pasyèl se sèlman sipòte si dosye opinyon sa a pa gen okenn relokasyon. Diferan fòma pwodiksyon ka gen plis restriksyon; pou egzanp kèk fòma "a.out" ki baze sou pa sipòte pasyèl ki lye ak dosye opinyon nan lòt fòma nan tout.

Opsyon sa a fè menm bagay ak -i .

-R fichier

--just-senbòl = filename

Li non senbòl yo ak adrès yo nan fichier , men se pa deplase li oswa enkli li nan pwodiksyon an. Sa a pèmèt dosye pwodiksyon ou a refere senbolik nan kote absoli nan memwa defini nan lòt pwogram yo. Ou ka itilize opsyon sa a plis pase yon fwa.

Pou konpatibilite ak lòt linkers ELF, si opsyon nan -R ki te swiv pa yon non anyè, olye ke yon non dosye, li trete kòm opsyon nan- rpath .

-s

--strip-tout

Siveye tout enfòmasyon senbòl nan dosye pwodiksyon an.

-S

--strip-debug

Omit enfòmasyon senbòl debugger (men se pa tout senbòl) soti nan dosye a pwodiksyon.

-t

-

Ekri non yo nan dosye yo opinyon kòm ld trete yo.

-T scriptfile

- script = scriptfile

Sèvi ak scriptfile kòm script la linker. Scripts sa a ranplase script lyen defo ld a (olye ke ajoute nan li), se konsa commandfile dwe presize tout bagay ki nesesè yo dekri dosye a pwodiksyon. Si scriptfile pa egziste nan anyè aktyèl la, "ld" sanble pou li nan repèrtwar yo espesifye nan nenpòt ki opsyon -L opsyon. Opsyon miltip -T akimile.

-u senbòl

--defini = senbòl

Fòs senbòl yo dwe antre nan dosye a pwodiksyon kòm yon senbòl endefini. Fè sa kapab, pou egzanp, deklanche ki lye ak modil adisyonèl nan bibliyotèk estanda. -u ka repete ak diferan opsyon agiman yo antre nan plis senbòl sanblab. Opsyon sa a ekivalan a "EXTERN" commander script ekstèn lan.

-Ur

Pou nenpòt lòt bagay ke pwogram C ++, opsyon sa a ekivalan a -r : li jenere pwodiksyon rsvozable --- sètadi, yon dosye pwodiksyon ki ka nan vire sèvi kòm opinyon ld . Lè lye ak pwogram C ++, -Ou rezoud referans sou konstrukteur, kontrèman ak -r . Li pa travay yo sèvi ak -Ur sou dosye ki te tèt yo lye avèk -Ur ; Yon fwa yo te tab la konstriktè te bati, li pa ka ajoute nan. Sèvi ak -Ou sèlman pou dènye pasyèl lyen, ak -r pou lòt moun yo.

--unique [= SEKSYON ]

Kreye yon seksyon pwodiksyon separe pou chak seksyon opinyon ki asosye SEKSYON , oswa si oksijèn aksidan SECTION agiman an manke, pou chak seksyon opinyon òfelen. Yon seksyon òfelen se youn ki pa espesifikman mansyone nan yon script linker. Ou ka itilize opsyon sa a miltip fwa sou liy lan lòd; Li anpeche Fusion nòmal nan seksyon opinyon ak non an menm, pase sou devwa pwodiksyon seksyon nan yon script linker.

-V

--version

-V

Montre nimewo vèsyon an pou ld . Opsyon -V la bay lis emosyon yo sipòte tou.

-x

--diskad-tout

Efase tout senbòl lokal yo.

-X

--diskad-moun nan lokalite yo

Efase tout tanporè senbòl lokal yo. Pou pi fò objektif, sa a se tout senbòl lokal ki gen non kòmanse ak L.

-y senbòl

--trace-senbòl = senbòl

Ekri non an nan chak dosye lye nan ki senbòl parèt. Opsyon sa a ka bay nenpòt kantite fwa. Sou anpil sistèm li nesesè pou yo sispann yon souliye.

Opsyon sa a se itil lè ou gen yon senbòl endefini nan lyen ou, men se pa konnen ki kote referans la ap vini soti nan.

-Yon chemen

Add chemen nan chemen an rechèch bibliyotèk default. Opsyon sa a egziste pou konpatibilite Solaris.

-z mo kle

Mo kle yo rekonèt yo se "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "kounye a", "orijin", "combreloc", "nocombreloc" ak "nocopyreloc ". Mo kle yo lòt inyore pou konpatibilite Solaris. "initfirst" make objè a yo dwe inisyalize premye nan ègzekutabl anvan nenpòt lòt objè yo. "interpose" make objè a ki tab senbòl li entèprete devan tout senbòl, men ègzèkutabl la prensipal "loadfltr" make objè a ki filtees li yo dwe trete imedyatman nan ègzekutabl. "nodefaultlib" make objè a ki rechèch la pou depandans nan objè sa a pral inyore nenpòt chemen rechèch bibliyotèk default. "nodelete" make objè a pa ta dwe dechaje nan ègzekutabl. "nodlopen" make objè a pa disponib nan "dlopen". "nodump" make objè a pa ka jete pa "dldump". "kounye a" make objè a ak obligatwa ègzèksyon ki pa parese a. "orijin" make objè a ka gen $ ORIGIN. "Defs" anile senbòl sanefini. "muldefs" pèmèt definisyon miltip. "combreloc" konbine seksyon relokaj plizyè ak kalite yo pou yo fè dinamik senbòl Lookup caching posib.

"nocombreloc" désactivée plizyè seksyon relok konbine. "nocopyreloc" désactivée pwodiksyon de relocs kopi.

- ( achiv -)

- achitekti -start-gwoup - end-gwoup

Achiv yo ta dwe gen yon lis dosye achiv . Yo ka swa non dosye eksplisit, oswa -l opsyon.

Achiv yo espesifye yo fouye repete jiskaske pa gen okenn nouvo referans endefini yo kreye. Nòmalman, se yon achiv fouye yon sèl fwa nan lòd la ke li se espesifye sou liy lan bay lòd. Si yon senbòl nan achiv sa a bezwen rezoud yon senbòl endefini ki refere ak yon objè nan yon achiv ki parèt pita sou liy lan bay lòd, linker a pa ta kapab rezoud ke referans. Pa gwoupman achiv yo, yo tout ap foure repete jouk tout referans posib rezoud.

Sèvi ak opsyon sa a gen yon pri pèfòmans enpòtan. Li pi bon yo sèvi ak li sèlman lè gen inevitab referans sikilè ant de oswa plis achiv.

- aksepte-unknown-opinyon-vout

-no-aksepte-enkoni-opinyon-vout

Di lyenè a yo aksepte dosye opinyon ki gen achitekti pa ka rekonèt. Sipozisyon an se ke itilizatè a konnen ki sa yo ap fè ak fè espre vle lyen nan sa yo dosye opinyon enkoni. Sa a te konpòtman an default nan linker a, anvan lage 2.14. Konpòtman an default soti nan lage 2.14 ivè se rejte dosye opinyon, e konsa te opsyon nan aksè-enkoni-opinyon-vout ki te ajoute retabli konpòtman la fin vye granmoun.

-swe mo kle

Opsyon sa a inyore pou konpatibilite SunOS .

-Bynamik

-dy

-call_shared

Link kont bibliyotèk dinamik. Sa a se sèlman siyifikatif sou tribin pou ki pataje bibliyotèk yo sipòte. Opsyon sa a se nòmalman default la sou tribin sa yo. Varyete yo diferan nan opsyon sa a yo se pou konpatibilite ak sistèm divès kalite. Ou ka itilize opsyon sa a miltip fwa sou liy lan lòd: li afekte bibliyotèk pou chèche -l opsyon ki swiv li.

-Bgroup

Mete "dra_1_GROUP" dra a nan antre "DT_FLAGS_1" a nan seksyon dinamik la. Sa a lakòz linker a ègzekutabl okipe Lookups nan objè sa a ak depandans li yo dwe fè sèlman anndan gwoup la. - pa endefini se enplisit. Opsyon sa a se sèlman sans sou ELF tribin ki sipòte bibliyotèk yo pataje .

-Bostyalize

-dn

-non_shared

-star

Pa lyen kont bibliyotèk yo pataje. Sa a se sèlman siyifikatif sou tribin pou ki pataje bibliyotèk yo sipòte. Varyete yo diferan nan opsyon sa a yo se pou konpatibilite ak sistèm divès kalite. Ou ka itilize opsyon sa a miltip fwa sou liy lan lòd: li afekte bibliyotèk pou chèche -l opsyon ki swiv li.

-Bsymbolic

Lè w kreye yon bibliyotèk pataje, mare referans sou senbòl mondyal yo nan definisyon an nan bibliyotèk la pataje, si genyen. Nòmalman, li posib pou yon pwogram ki lye kont yon bibliyotèk komen pou depase definisyon an nan bibliyotèk la pataje a. Opsyon sa a se sèlman sans sou ELFplatforms ki sipòte bibliyotèk yo pataje.

--check-seksyon

- pa tcheke seksyon

Mande linker la pa tcheke adrès seksyon apre yo te asiyen yo wè si gen nenpòt ki sipèpoze. Nòmalman linker a pral fè chèk sa a, epi si li jwenn nenpòt ki sipli li pral pwodwi mesaj erè apwopriye. Linker a konnen sou, ak fè alokasyon pou seksyon nan superpositions. Ka konpòtman an default dwe retabli lè l sèvi avèk switch la liy lòd --check-seksyon .

--cref

Sòti yon tab referans kwa. Si se yon kat jeyografik linker ki te pwodwi, se tab la referans kwa enprime nan dosye a kat jeyografik. Sinon, li se enprime sou pwodiksyon an estanda.

Fòma tab la se entansyonèlman senp, pou ke li ka fasil trete pa yon script si sa nesesè. Senbòl yo enprime soti, klase pa non. Pou chak senbòl, yo bay yon lis non dosye. Si senbòl la defini, premye dosye ki nan lis la se kote definisyon an. Dosye ki rete yo gen referans sou senbòl la.

- pa-defini-komen

Opsyon sa a inibit plasman adrès yo nan senbòl komen yo. Kòmandman script la "INHIBIT_COMMON_ALLOCATION" gen efè a menm.

Opsyon nan -no-defini-komen pèmèt dekouplen desizyon an pou bay adrès senbòl komen soti nan chwa nan kalite a dosye pwodiksyon; otreman yon fòs kalite ki pa Peye-rokozab ranplase adrès nan senbòl komen. Sèvi ak -no-defini-komen pèmèt senbòl komen ki referans soti nan yon bibliyotèk pataje yo dwe plase adrès sèlman nan pwogram prensipal la. Sa a elimine espas ki la doub itilize nan bibliyotèk la pataje, epi tou li anpeche nenpòt ki konfizyon posib sou rezoud nan kopi a mal lè gen anpil modil dinamik ak chemen rechèch espesyalize pou rezolisyon ranje senbòl.

--defsym senbòl = ekspresyon

Kreye yon senbòl mondyal nan dosye pwodiksyon an, ki gen adrès la absoli bay pa ekspresyon . Ou ka itilize opsyon sa a anpil fwa nesesè pou defini senbòl miltip nan liy lan lòd. Yon fòm ki limite nan aritmetik sipòte pou ekspresyon an nan kontèks sa a: ou ka bay yon konstan ekzadesimal oswa non an nan yon senbòl ki deja egziste, oswa itilize "+" ak "-" ajoute oswa soustraksyon konstan konstan oswa senbòl. Si ou bezwen ekspresyon plis elabore, konsidere lè l sèvi avèk lang lan bay lòd Linking soti nan yon script. Remak: ta dwe pa gen okenn espas blan ant senbòl , siyal siy (`` = ''), ak ekspresyon .

- demontre [= style ]

- pa-demann

Opsyon sa yo kontwole si wi ou non yo demontre non senbòl nan mesaj erè ak lòt pwodiksyon. Lè yo linker te di pou demontre, li ap eseye prezante non senbòl nan yon mòd lizib: li bann dirijan inserscores si yo te itilize pa fòma a dosye objè, ak konvèti C + + manglenn non non nan itilizatè non lizib. Diferan konpilateur gen diferan estil manglin. Ka agiman an opsyonèl si ou vle demontre dwe itilize yo chwazi yon style ki apwopriye demantling pou du ou. Linker a pral demontre pa default sof si anviwònman COLLECT_NO_DEMANGLE varyab la mete. Opsyon sa yo ka itilize pou pase sou defo.

--Dynamic-linker dosye

Mete non an nan linker dinamik la. Sa a se sèlman siyifikatif lè génération eleman ki lakòz ELF ègzèkutabl. Linker dinamik default a nòmalman kòrèk; pa sèvi ak sa sof si ou konnen ki sa ou ap fè.

-embedded-relocs

Opsyon sa a se sèlman siyifikatif lè ki konekte MIPS entegre kòd PIC, ki te pwodwi pa opsyon nan -membedded-pic nan GNU konpilateur ak asanble. Li lakòz linker a yo kreye yon tab ki ka itilize nan ègzekutabl deplase nenpòt done ki te statikalize inisyalize valè pointer. Gade kòd la nan testuite / ld-empic pou plis detay.

- fatal avètisman

Trete tout avètisman kòm erè .

--for-exe-sifiks

Asire w ke yon dosye pwodiksyon gen yon sifiks .exe.

Si yon siksè bati konplètman lye ranpli pwodiksyon pa gen yon " .exe " oswa " .dll " sifiks, opsyon sa a fòs linker a yo fè kopi dosye a pwodiksyon nan youn nan menm non yo ak yon ".exe" sifiks. Opsyon sa a itil lè wap itilize UNModified makefiles UNIX sou yon Microsoft Windows lame, depi kèk vèsyon nan Windows pa pral kouri yon imaj sòf si li fini nan yon sifiks ".exe".

-no-gc-seksyon

--gc-seksyon

Pèmèt koleksyon fatra nan seksyon opinyon rès. Li se inyore sou objektif ki pa sipòte opsyon sa a. Opsyon sa a pa konpatib ak -r , ni li ta dwe itilize ak lyen ki dinamik. Konpòtman an default (nan pa fè sa koleksyon fatra ) yo ka retabli pa ki espesifye - pa-gc-seksyon sou liy lan bay lòd.

- ede

Ekri yon rezime opsyon liy-liy yo sou pwodiksyon estanda a ak sòti.

--target-èd

Ekri yon rezime de tout sib opsyon espesifik sou pwodiksyon estanda ak sòti.

-Map mapfile

Ekri yon kat jeyografik lyen nan folderfile dosye a. Al gade nan deskripsyon an nan opsyon an -M , pi wo a.

- pa kenbe memwa

Ld nòmalman optimize pou vitès sou itilizasyon memwa pa caching tab senbòl yo nan dosye opinyon nan memwa. Opsyon sa a di ld olye optimize pou itilizasyon memwa, pa relè tab senbòl yo jan sa nesesè. Sa ka mande pou ld kouri soti nan espas memwa pandan y ap ki lye ak yon gwo ègzèkutabl.

- pa-defini

-z defs

Nòmalman lè ou kreye yon bibliyotèk ki pa senbolik pataje, senbòl yo defini ak pèmèt yo dwe rezoud pa loader a ègzekutabl. Opsyon sa yo anile senbòl sa yo endefini.

- Allow-miltip-definisyon

-z muldefs

Nòmalman lè se yon senbòl defini plizyè fwa, linker la ap fè rapò yon erè fatal. Opsyon sa yo pèmèt definisyon miltip ak definisyon an premye yo pral itilize.

- Allow-shlib-endefini

Pèmèt senbòl endefini nan objè pataje menm lè - pa endefini mete. Rezilta a nèt yo pral ke senbòl endefini nan objè regilye ap toujou deklanche yon erè, men senpman endefini nan pataje objè yo pral inyore. Aplikasyon nan no_undefined fè sipozisyon an ke linker a ègzekutabl pral toufe sou senbòl sanefini. Sepandan, gen omwen yon sistèm (BeOS) kote senbòl endefini nan bibliyotèk pataje se nòmal depi koreksyon an afiche yo nan moman chaj pou chwazi ki fonksyon ki pi apwopriye pou achitekti aktyèl la. IE dynamique chwazi yon fonksyon memset apwopriye. Aparamman, li tou nòmal pou HPPA pataje bibliyotèk yo gen senbòl endefini.

-no-endefini-vèsyon

Nòmalman lè yon senbòl gen yon vèsyon endefini, linker a pral inyore li. Opsyon sa a anile senbòl ak vèsyon endefini ak yon erè fatal yo pral bay olye.

- pa-avèti-deche

Nòmalman ld ap bay yon erè si ou eseye konekte ansanm dosye opinyon ki mismatched pou kèk rezon, petèt paske yo te konpile pou processeurs diferan oswa pou endianness diferan. Opsyon sa a di ld ke li ta dwe an silans pèmèt erè sa yo posib. Opsyon sa a ta dwe itilize sèlman ak swen, nan ka lè ou te pran kèk aksyon espesyal ki asire ke erè yo linker yo apwopriye.

-no-antye-achiv

Fèmen efè a nan opsyon a --whole-achiv pou dosye achiv ki vin apre.

--noinhibit-ekzekitif

Kenbe dosye a pwodiksyon ègzèkutabl chak fwa li toujou ka itilize. Nòmalman, linker a pa pral pwodwi yon dosye pwodiksyon si li rankont erè pandan pwosesis lyen; li sòti san yo pa ekri yon dosye pwodiksyon lè li pwoblèm nenpòt erè tou.

-nostdlib

Se sèlman repèrtwar bibliyotèk rechèch eksplisitman espesifye sou liy lan bay lòd. Repèrtwar Bibliyotèk espesifye nan Scripts Linker (ki gen ladan Scripts Linker espesifye sou liy lan lòd) yo inyore.

- fòma pwodiksyon-fòma

ld ka configuré sipòte plis pase yon sèl kalite dosye objè. Si ld ou configuré fason sa a, ou ka itilize opsyon a - fòma presize fòma a binè pou dosye a objè pwodiksyon. Menm lè ld configuré sipòte fòma objè altènatif, ou pa anjeneral bezwen presize sa a, kòm ld yo ta dwe configuré yo pwodwi kòm yon fòma pwodiksyon default fòma ki pi abityèl sou chak machin. Pwodiksyon-fòma se yon kòd tèks, non an nan yon fòma patikilye ki sipòte pa bibliyotèk yo BFD. (Ou ka lis fòma yo binè ki disponib ak objdump -i .) Kòmandman an script "OUTPUT_FORMAT" kapab presize tou fòma a pwodiksyon, men opsyon sa a overrides li.

-magic

Opsyon sa a inyore pou konpatibilite Linux.

-Ky

Opsyon sa a inyore pou SVR4 konpatibilite.

--relax

Yon opsyon ak efè depandan machin. Se opsyon sa a sèlman sipòte sou yon objektif kèk.

Sou kèk tribin, opsyon an --relax fè optimize mondyal ki vin posib lè linker a rezoud adrese nan pwogram nan, tankou mòd adrès ap detann ak sentèz nouvo enstriksyon nan dosye a objè pwodiksyon.

Sou kèk tribin sa yo lyen tan optimizasyon mondyal ka fè debogaj senbolik nan enposib la ki kapab lakòz enposib. Sa a se konnen yo dwe ka a pou Matsushita MN10200 la ak MN10300 fanmi an nan processeurs.

Sou tribin kote sa a pa sipòte, --relax aksepte, men inyore.

--retain-senbòl-dosye fichier

Kenbe sèlman senbòl yo ki nan lis fichye a ranpli, jete tout lòt moun. Fichier se senpleman yon dosye plat, ak yon non senbòl pou chak liy. Opsyon sa a se itil espesyalman nan anviwonman (tankou VxWorks) kote yon gwo senbòl tab mondyal akimile piti piti, konsève memwa kouri tan.

--retain-senbòl-dosye pa jete senbòl san limit , oswa senbòl ki nesesè pou demenajman.

Ou ka sèlman presize --retain-senbòl-dosye yon fwa nan liy lan lòd. Li overrides -s ak -S .

-Rpath dir

Ajoute yon anyè nan chemen rechèch bibliyotèk la. Sa a se itilize lè lye ak yon ELFexecutable ak pataje objè yo. Tout agiman- rpath yo anbete epi yo pase nan linker a ègzekutabl, ki itilize yo jwenn objè pataje nan ègzékusion. Opsyon- rpath se tou itilize lè lokalize objè pataje ki nesesè pa objè pataje eksplisitman enkli nan lyen an; gade deskripsyon opsyon-rpath-link opsyon. Si -rpath pa itilize lè lye ak yon ègzèkutabl ELF, yo pral itilize nan varyab anviwònman "LD_RUN_PATH" la si li defini.

Opsyon rpath la ka itilize tou sou SunOS. Pa default, sou SunOS, linker a pral fòme yon patch rechèch ègzekutabl soti nan tout opsyon yo -L li yo bay yo. Si yo itilize yon opsyon rpath , y ap fòme chemen rechèch la èksplwatasyon sèlman lè l sèvi avèk opsyon yo- rpath , inyore opsyon yo -L . Sa a ka itil lè w ap itilize GCC, ki ajoute anpil -L opsyon ki ka onNFS monte filacystems.

Pou konpatibilite ak lòt linkers ELF, si opsyon nan -R ki te swiv pa yon non anyè, olye ke yon non dosye, li trete kòm opsyon nan- rpath .

-rpath-link DIR

Lè w ap itilize ELF oswa SunOS, yon bibliyotèk pataje ka mande yon lòt. Sa rive lè yon "ld-chaje" lyen gen ladan yon bibliyotèk pataje kòm youn nan dosye yo opinyon.

Lè linker la rankontre tankou yon depandans lè w ap fè yon lyen ki pa pataje, ki pa relokatable, li pral otomatikman eseye lokalize bibliyotèk la pataje ak mete li nan lyen an, si li pa enkli klèman. Nan ka sa a, rpath-link opsyon a espesifye mete nan premye nan repèrtwar nan rechèch. Opsyon-rpath-lyen an ka presize yon sekans non non swa pa espesifye yon lis non ki separe pa kolon, oswa pa parèt plizyè fwa.

Opsyon sa a ta dwe itilize ak prekosyon jan li pase sou chemen rechèch la ke yo ka difisil konpile nan yon bibliyotèk pataje. Nan ka sa a li se posib yo sèvi ak san danje yon chemen rechèch diferan pase linker a ègzekutabl ta fè.

Linker a sèvi ak chemen rechèch sa yo pou jwenn bibliyotèk yo mande yo.

1.

Nenpòt repèrtwar espesifye pa -rpath-lyen opsyon.

2.

Nenpòt repèrtwar espesifye nan- rpath opsyon. Diferans ki genyen ant- rpath ak -rpath-lyen se ke repèrtwar ki espesifye pa- rpath opsyon yo enkli nan ègzèkutabl a ak itilize nan ègzékusion, Lè nou konsidere ke -rpath-lyen opsyon a se sèlman efikas nan tan lyen. Li se pou linker natif natal la sèlman.

3.

Sou yon sistèm ELF, si opsyon -rpath ak "rpath-link" opsyon yo pa te itilize, rechèch sa ki nan varyab anviwònman an "LD_RUN_PATH". Li se pou linker natif natal la sèlman.

4.

Sou SunOS, si opsyon nan- rpath pa te itilize, rechèch nenpòt repèrtwar espesifye lè l sèvi avèk -L opsyon.

5.

Pou yon linker natif natal, sa ki nan anviwònman an varyab "LD_LIBRARY_PATH".

6.

Pou yon natif natal ELF linker, repèrtwar yo nan "DT_RUNPATH" oswa "DT_RPATH" nan yon bibliyotèk pataje yo fouye pou bibliyotèk pataje ki nesesè pa li. "DT_RPATH" antre yo yo inyore si antre "DT_RUNPATH" egziste.

7.

Repèrtwar yo default, nòmalman / lib ak / usr / lib .

8.

Pou yon linker natif natal sou yon sistèm ELF, si dosye /etc/ld.so.conf egziste, lis repèrtwar yo jwenn nan dosye sa a.

Si bibliyotèk ki obligatwa yo pa jwenn, linker la ap bay yon avètisman epi kontinye ak lyen an.

-Shared

-Shareable

Kreye yon bibliyotèk pataje. Sa a se kounye a sèlman sipòte sou ELF, XCOFF ak SunOS tribin. Sou SunOS, linker a pral otomatikman kreye yon bibliyotèk pataje si opsyon -e pa itilize epi gen senbòl endefini nan lyen an.

--sòt-komen

Opsyon sa a di ld sòt senbòl komen yo pa gwosè lè li mete yo nan seksyon pwodiksyon ki apwopriye yo. Premye vini tout senbòl yo youn nan sèl, Lè sa a, tout de byte a, Lè sa a, tout kat multiple, ak Lè sa a, tout lòt bagay. Sa a se anpeche twou vid ki genyen ant senbòl akòz kontrent aliyman.

- split-by-file [ gwosè ]

Menm jan ak - split-by-reloc men kreye yon seksyon pwodiksyon nouvo pou chak dosye opinyon lè gwosè rive. gwosè défaut nan yon gwosè nan 1 si yo pa bay yo.

- split-by-reloc [ konte ]

Ap eseye kreye seksyon siplemantè nan dosye pwodiksyon an pou ke pa gen okenn seksyon pwodiksyon sèl nan dosye a gen plis pase relokalite konte . Sa a se itil lè génération gwo dosye deplase pou telechaje nan sèten nòmal tan reyèl ak fòma a objè file COFF; depi COFFcannot reprezante plis pase 65535 relokasyon nan yon seksyon sèl. Remake byen ke sa a pral fail nan travay ak fòma dosye objè ki pa sipòte seksyon abitrè. Linker a pa pral divize seksyon opinyon endividyèl pou répartition, kidonk si yon seksyon opinyon sèl gen plis pase deplasman konte yon seksyon pwodiksyon pral gen anpil relokasyon. konte défaut nan yon valè de 32768.

--stats

Konpare ak ekspozisyon estatistik sou operasyon an nan linker a, tankou lè ekzekisyon ak itilizasyon memwa.

- tradisyonèl-fòma

Pou kèk objektif, pwodiksyon an nan ld se diferan nan kèk fason soti nan pwodiksyon an nan kèk linker ki deja egziste. Sa a switch demann ld yo sèvi ak fòma a tradisyonèl olye.

Pou egzanp, sou SunOS, ld konbine antre doub nan senbòl la fisèl tab. Sa a ka diminye gwosè a nan yon dosye pwodiksyon ak enfòmasyon debogaj plen nan plis pase 30 pousan. Malerezman, SunOS "dbx" pwogram lan pa ka li pwogram lan ki kapab lakòz ("gdb" pa gen okenn pwoblèm). Chanjman -fòma-fòma a di ld pa konbine antre kopi.

- seksyon-kòmanse seksyon = org

Jwenn yon seksyon nan dosye pwodiksyon an nan adrès la absoli bay nan org . Ou ka itilize opsyon sa a anpil fwa ke ou bezwen jwenn seksyon miltip nan liy lan lòd. org dwe yon sèl nonb antye relatif ekzadesimal; pou konpatibilite ak linkers lòt, ou ka oblije 0x la dirijan anjeneral ki asosye avèk valè ekzadesimal. Remak: ta dwe gen okenn espas blan ant seksyon , siyal siy (`` = ''), ak org .

-Tbss org

-Tdata org

-Tèks org

Sèvi ak org kòm adrès la kòmanse pou --- respektivman --- "bss", "done", oswa segman nan "tèks" nan dosye a pwodiksyon. org dwe yon sèl nonb antye relatif ekzadesimal; pou konpatibilite ak linkers lòt, ou ka oblije 0x la dirijan anjeneral ki asosye avèk valè ekzadesimal.

-dll-verbose

--verbose

Montre nimewo vèsyon an pou ld epi mete lis emosyon yo linker sipòte. Montre ki dosye D 'ka epi yo pa kapab louvri. Montre lyen script la ki te itilize pa linker la.

-version-script = vèsyon-scriptfile

Espesifye non an nan yon script vèsyon nan linker la. Sa a se tipikman itilize lè yo kreye bibliyotèk pataje presize enfòmasyon adisyonèl sou eritaj vèsyon an pou bibliyotèk la te kreye. Opsyon sa a se sèlman sans sou ELF tribin ki sipòte bibliyotèk yo pataje.

--warn-komen

Avèti lè yon senbòl komen konbine avèk yon lòt senbòl komen oswa avèk yon definisyon senbòl. UNIX linkers pèmèt sa a pratik ti jan sloppy, men linkers sou kèk sistèm operasyon lòt pa fè sa. Opsyon sa a pèmèt ou jwenn pwoblèm potansyèl nan konbine senbòl mondyal yo. Malerezman, gen kèk bibliyotèk C itilize pratik sa a, kidonk ou ka jwenn kèk avètisman sou senbòl nan bibliyotèk yo ak nan pwogram ou yo.

Gen twa kalite senbòl mondyal, ilistre isit la pa egzanp C:

Int i = 1;

Yon definisyon, ki ale nan seksyon an done inisyalize nan dosye a pwodiksyon.

extern int mwen;

Yon referans endefini, ki pa asiyen espas. Dwe gen swa yon definisyon oswa yon senbòl komen pou varyab a yon kote.

int mwen;

Yon senbòl komen. Si gen sèlman (youn oswa plis) senbòl komen pou yon varyab, li ale nan zòn nan done uninitialized nan dosye a pwodiksyon. Linker a fusion plizyè senbòl komen pou varyab la menm nan yon senbòl sèl. Si yo nan gwosè diferan, li chwazi gwosè a pi gwo. Linker a vire yon senbòl komen nan yon deklarasyon, si gen yon definisyon nan varyab la menm.

Opsyon nan -warn-komen ka pwodwi senk kalite avètisman. Chak avètisman konsiste de yon pè liy: premye a dekri senbòl la jis rankontre, ak dezyèm la dekri senbòl la anvan rankontre ak menm non yo. Youn oswa toude de senbòl yo pral yon senbòl komen.

1.

Vire yon senbòl komen nan yon referans, paske gen deja yon definisyon pou senbòl la.

(): avètisman: komen nan `< 'sove pa definisyon (): avètisman: defini isit la

2.

Vire yon senbòl komen nan yon referans, paske se yon definisyon pita pou senbòl la rankontre. Sa a se menm bagay la kòm ka a anvan, eksepte ke senbòl yo ap rankontre nan yon lòd diferan.

(
): avètisman: definition of ` 'overriding komen (
): avètisman: komen se isit la

3.

Fusion yon senbòl ki komen ak yon senbòl anvan menm ki menm gwosè ak komen.

(
): avètisman: miltip komen nan `< ' (
): avètisman: anvan komen se isit la

4.

Fusion yon senbòl komen ak yon senbòl ki pi gran anvan komen.

(): avètisman: komen nan ` 'anrejistre pa pi gwo komen (): avètisman: pi gwo komen se isit la

5.

Fusion yon senbòl komen ak yon senbòl anvan ki pi piti komen. Sa a se menm bagay la kòm ka a anvan, eksepte ke senbòl yo ap rankontre nan yon lòd diferan.

(
): avètisman: komen nan ` 'anpeche pi piti komen (): avètisman: pi piti komen se isit la

--warn-constructeurs

Avèti si nenpòt konstrukteur mondyal yo te itilize. Sa a se sèlman itil pou yon kèk fòma dosye objè. Pou fòma tankou COFF oswa ELF, linker a pa ka detekte itilize nan konstrukteur mondyal.

--warn-miltip-gp

Avèti si plizyè valè konsèy mondyal yo gen obligasyon nan dosye pwodiksyon an . Sa a se sèlman siyifikatif pou processeurs sèten, tankou Alpha la. Espesyalman, kèk processeurs mete konstan ki gwo valè nan yon seksyon espesyal. Yon enskripsyon espesyal (pwen global la) pwen nan mitan seksyon sa a, se konsa ke konstan yo ka chaje avèk efikasite atravè yon baz-enskri modèl adrese relatif. Depi konpansasyon an nan baz enskri relatif mòd se fiks ak relativman ti (egzanp, 16 Bits), sa a limit gwosè a maksimòm pisin lan konstan. Se konsa, nan pwogram gwo, li se souvan nesesè yo sèvi ak miltip valè konsèy mondyal yo nan lòd pou kapab adrese tout konstan ki posib. Opsyon sa a lakòz yon avètisman pou bay chak fwa ka sa a rive.

--warn-yon fwa

Se sèlman avèti yon fwa pou chak senbòl endefini, olye ke yon fwa pou chak modil ki refere a li.

--warn-seksyon-aliman

Avèti si adrès la nan yon seksyon pwodiksyon chanje paske nan aliyman. Tipikman, yo pral mete aliyman pa yon seksyon opinyon. Adrès la ap chanje sèlman si li pa espesifye espesifikman; Sa vle di, si "seksyon" lòd la pa presize yon adrès kòmanse pou seksyon an.

--whole-achiv

Pou chak achiv mansyone sou liy la bay lòd apre opsyon a -whole-achiv , gen ladan yo chak dosye objè nan achiv la nan lyen an, olye ke chache achiv la pou objè yo objè yo mande yo. Sa a se nòmalman itilize yo vire yon dosye achiv nan yon bibliyotèk pataje, fòse chak objè yo dwe enkli nan bibliyotèk la ki kapab lakòz. Opsyon sa a ka itilize plis pase yon fwa.

De nòt lè w ap itilize opsyon sa a soti nan gcc: Premyèman, gcc pa konnen sou opsyon sa a, kidonk, ou bezwen sèvi ak -Wl, -whole-achiv . Dezyèmman, pa bliye sèvi ak -Wl, -no-antye-achiv apre lis ou nan achiv, paske gcc pral ajoute lis pwòp li yo nan achiv nan lyen ou epi ou ka pa vle sa a drapo a afekte sa yo tou.

- senbòlwrap

Sèvi ak yon fonksyon pakè pou senbòl . Nenpòt referans endefini nan senbòl pral rezoud nan "__ wrap_symbol". Nenpòt referans endefini nan "__real_symbol" ap rezoud nan senbòl .

Sa a ka itilize bay yon pakè pou yon fonksyon sistèm. Fonksyon an pakè yo ta dwe rele "__wrap_symbol". Si li vle rele sistèm fonksyon an, li ta dwe rele "__ real_symbol".

Isit la se yon egzanp trivial:

anile * __wrap_malloc (int c) {printf ("malok rele ak ld \ n", c); retounen __real_malloc (c); }}

Si ou konekte lòt kòd ak sa a dosye lè l sèvi avèk --wap malok , Lè sa a, tout apèl nan "malok" ap rele fonksyon an "__wrap_malloc" olye. Rele nan "__real_malloc" nan "__wrap_malloc" ap rele reyèl "malok" fonksyon an.

Ou ka vle bay yon "__real_malloc" fonksyon kòm byen, se konsa ke lyen san yo pa opsyon a - wrap pral reyisi. Si ou fè sa, ou pa ta dwe mete definisyon an nan "__ real_malloc" nan dosye a menm jan ak "__wrap_malloc"; si ou fè, asanble a ka rezoud apèl la anvan linker a gen yon chans vlope li nan "malok".

--enable-nouvo-dtags

--disable-nouvo-dtags

Sa a linker ka kreye nouvo tags yo dinamik nan ELF. Men, sistèm ELF ki pi gran yo pa ka konprann yo. Si ou presize --enable-nouvo-dags , yo pral kreye tags dinamik jan sa nesesè. Si ou presize --disable-nouvo-dtags , pa gen okenn nouvo tags dinamik yo pral kreye. Pa default, nouvo tags yo dinamik yo pa kreye. Remake byen ke opsyon sa yo se sèlman ki disponib pouFè sistèm yo.

Linker PE a i386 sipòte opsyon nan -shared , ki lakòz pwodiksyon an yo dwe yon bibliyotèk dinamik lye (DLL) olye pou yo yon ègzèkutabl nòmal. Ou ta dwe non randman "* .DLL a" lè ou itilize opsyon sa a. Anplis de sa, linker la konplètman sipòte estanda "* .def" dosye yo, ki ka espesifye sou liy lan lòd linker tankou yon dosye objè (an reyalite, li ta dwe vini anvan achiv li ekspòtasyon senbòl soti nan, asire yo ke yo jwenn lye nan, jis tankou yon dosye objè nòmal).

Anplis opsyon komen pou tout objektif, i386 PE linker sipòte sipò opsyon liy adisyonèl ki espesifik pou sib la i386 PE. Opsyon ki pran valè yo ka separe de valè yo pa swa yon espas oswa yon siy egal.

- ajoute-stdcall-alyas

Si yo bay, senbòl ki gen yon sifiks stdcall (@ nn ) pral ekspòte kòm-se epi tou li ak sifiks la dezabiye.

- dosye fichye

Sèvi ak dosye kòm non an nan yon dosye nan ki pou konsève pou adrès yo baz nan tout relokaj ki nesesè pou jenere DLL ak dlltool .

- Dll

Kreye yon DLL olye de yon ègzèkutabl regilye. Ou ka itilize tou- ouvè oswa presize yon "BIBLIYOTÈK" nan yon dosye ".Def".

--enable-stdcall-fixup

--disable-stdcall-fixup

Si lyen an jwenn yon senbòl ke li pa ka rezoud, li pral eseye fè "mou lyen" pa kap chèche yon lòt senbòl defini ki diferan sèlman nan fòma a nan non an senbòl (cdecl vs stdcall) epi yo pral rezoud ke senbòl pa ki lye ak nan match la. Pa egzanp, senbòl endefini "_foo" ta ka lye nan fonksyon "_foo @ 12", oswa senbòl endefini "_bar @ 16" ka lye nan fonksyon "_bar". Lè linker a fè sa, li simagri yon avètisman, depi li nòmalman yo ta dwe te echwe pou pou konekte, men pafwa enpòte bibliyotèk pwodwi soti nan dll twazyèm pati ka bezwen karakteristik sa a yo ka itilize. Si ou presize --enable-stdcall-fixup , karakteristik sa a se konplètman pèmèt ak avètisman yo pa enprime. Si ou presize --disable-stdcall-fixup , karakteristik sa a se andikape ak mismatches sa yo konsidere yo dwe erè.

- Ekspòte-tout-senbòl

Si yo bay, tout senbòl mondyal nan objè yo itilize yo bati yon DLL pral ekspòte pa DLL la. Remake byen ke sa a se default la si gen otreman pa ta dwe nenpòt ki senbòl ekspòte. Lè senbòl yo ekspozeman ekspòte atravè dosye DEF oswa eksplisitman ekspòte atravè atribi fonksyon, default la se pa ekspòtasyon nenpòt lòt bagay sof si opsyon sa a bay. Remake ke senbòl yo "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", ak "impure_ptr" pa pral otomatikman ekspòte. Epitou, senbòl enpòte soti nan lòt dll pa pral re-ekspòte, ni pral senbòl ki espesifye layout entèn la DLL a tankou sa yo kòmanse ak "_head_" oswa fini ak "_iname". Anplis de sa, pa gen okenn senbòl ki soti nan "libgcc", "libstd ++", "libmingw32", oswa "crtX.o" yo pral ekspòte. Senbòl ki gen non kòmanse ak "__rtti_" oswa "__builtin_" pa pral ekspòte, pou ede ak C + DLLs. Finalman, gen yon lis vaste senigwyen-prive ki pa ekspòte (evidamman, sa a aplike sou lè bilding DLL pou sib cygwin).

Sa yo cygwin-eksklizyon yo se: "_cygwin_dll_entry @ 12", "_cygwin_crt0_common @ 8", "_ cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3 ", ak" anviwonman ".

- ekskli-senbòl senbòl , senbòl , ...

Espesifye yon lis senbòl ki pa ta dwe otomatikman ekspòte. Non yo senbòl yo ka delimite pa koma oswa kolon.

- ekskli-libs lib , lib , ...

Espesifye yon lis bibliyotèk achiv kote senbòl yo pa ta dwe otomatikman ekspòte. Non bibliyotèk yo ka delimite pa komas oswa kolon. Espesifye "- ekskli-libs TOUT" eksklizyon senbòl nan tout bibliyotèk achiv soti nan ekspòtasyon otomatik. Senbòl eksplisitman ki nan lis nan yon .def dosye toujou ekspòte, kèlkeswa opsyon sa a.

- dosye-aliyman

Espesifye aliyman dosye a. Seksyon nan dosye a ap toujou kòmanse nan offsets ranpli ki se miltip nan nimewo sa a. Sa défaut pou 512.

--heap rezève

--heap rezève , komèt

Espesifye kantite lajan memwa rezève (ak opsyonèlman komèt) yo dwe itilize kòm pil pou pwogram sa a. Default la se 1Mb rezève, 4K pran angajman.

- Imaj-baz valè

Itilize valè kòm adrès baz la nan pwogram ou a oswa dll. Sa a se kote ki pi ba memwa ke yo pral itilize lè pwogram ou a oswa dll chaje. Pou diminye bezwen pou deplase ak amelyore pèfòmans dll ou yo, chak yo ta dwe gen yon adrès baz inik epi yo pa sipèpoze nenpòt lòt dll. Default la se 0x400000 pou ègzèkutabl, ak 0x10000000 pou dll.

--kil-nan

Si yo bay yo, sifiks nan stdcall (@ nn ) yo pral dechouke soti nan senbòl yo anvan yo ekspòte.

- pi gwo-imaj-vèsyon valè

Ansanm nimewo a pi gwo nan 'vèsyon an imaj' '. Défaut nan 1.

--major-os-vèsyon valè

Ansanm nimewo a pi gwo nan `` vèsyon an ''. Défaut pou 4.

-major-subsystem-vèsyon valè

Ansanm nimewo a pi gwo nan 'vèsyon an subsystem' '. Défaut pou 4.

- Minim-imaj-vèsyon valè

Ansanm nimewo a minè nan 'vèsyon an imaj' '. Défaut pou 0.

-minor-os-vèsyon valè

Ansanm nimewo a minè nan 'vèsyon an' '. Défaut pou 0.

- -minor-subsystem-vèsyon valè

Sets nimewo a minè nan 'vèsyon an subsystem' '. Défaut pou 0.

--output-def dosye

Linker a pral kreye dosye a dosye ki pral gen ladan yon dosye DEF ki koresponn ak DLL a linker a génération. Fichye DEF sa a (ki ta dwe rele "* .def") yo ka itilize pou kreye yon bibliyotèk enpòte ak "dlltool" oswa yo ka itilize kòm yon referans nan senbòl otomatikman oswa eksplisitman ekspòte.

--out-implib dosye

Linker a pral kreye dosye a dosye ki pral gen ladan yon lib enpòte ki koresponn ak DLL a linker a génération. Sa a lib enpòte (ki ta dwe rele "* .dll.a" oswa "* .a" ka itilize yo konekte kliyan kont dl a pwodwi; konpòtman sa a fè li posib sote yon "dlltool" etap kreyasyon anpòte kreyasyon.

--enable-oto-imaj-baz

Otomatikman chwazi baz la imaj pou DLL, sòf si se yon sèl ki espesifye lè l sèvi avèk "--image-baz" agiman an. Lè l sèvi avèk yon regle ki soti nan dllname a yo kreye baz imaj inik pou chak DLL, kolizyon nan memwa ak relokasyon ki ka retade ekzekisyon pwogram yo evite.

--disable-oto-imaj-baz

Pa otomatikman jenere yon baz imaj inik. Si pa gen okenn baz done itilizatè-espesifye ("--image-baz") Lè sa a, sèvi ak default platfòm la.

- Dll-rechèch-prefiks fisèl

Lè lyezon dinamik nan yon dll san yon bibliyotèk enpòte, rechèch pou " .dll" nan preferans nan "lib .dll". Konpòtman sa a pèmèt distenksyon fasil ant DLL ki konstwi pou plizyè subplatforms yo: natifnatal, cygwin, uwin, pw, elatriye Pou egzanp, DLLs cygwin tipikman itilize "- dll-search-prefix = cyg".

--enable-oto-enpòte

Fè sofistike lyen ki mennen nan "_symbol" nan "__imp__symbol" pou DATA enpòtasyon soti nan DLL, ak kreye senbòl yo thunking nesesè lè bati bibliyotèk yo enpòte ak sa yo DATAexports. Sa a jeneralman pral 'jis travay' --- men pafwa ou ka wè mesaj sa a:

"varyab" 'pa ka oto-enpòte. Tanpri, li dokiman an pou ld a "--enable-oto-enpòte" pou detay. "

Mesaj sa a rive lè kèk ekspresyon (sub) aksè adrese yon adrès finalman bay sòm de de konstan (tab enpòte Win32 sèlman pèmèt yon sèl). Kantik kote sa a ka rive gen ladan aksè nan jaden manm nan varyab struct enpòte soti nan yon DLL, osi byen ke lè l sèvi avèk yon endèks konstan nan yon varyab etalaj enpòte soti nan yon DLL. Nenpòt varyete multi (ranje, structs, depi lontan, elatriye) ka deklanche kondisyon sa a erè. Sepandan, kèlkeswa kalite done egzak la nan ofansif ekspòte varyab, ld ap toujou detekte li, pwoblèm avètisman an, ak sòti.

Gen plizyè fason pou adrese difikilte sa a, kèlkeswa kalite done ki ekspòte varyab la:

Youn nan fason se yo itilize --enable-ègzekutabl-pseudo-relok switch. Sa a fèy travay la nan ajiste referans nan kòd kliyan ou a pou anviwònman ègzekutabl, kidonk metòd sa a travay sèlman lè environdment rontim sipòte karakteristik sa a.

Yon dezyèm solisyon se fòse youn nan 'konstan yo' yo dwe yon varyab --- ki se, enkoni ak un-optimizable nan tan konpile. Pou etalaj, gen de posiblite: a) fè endèksye a (adrès etalaj la) yon varyab, oswa b) fè endèks la 'konstan' yon varyab. Se konsa:

ekstèn kalite extern_array []; extern_array [1] -> {temèt tip * t = extern_array; t [1]}

oswa

ekstèn kalite extern_array []; extern_array [1] -> {tematile int t = 1; extern_array [t]}

Pou structs (ak pifò lòt kalite done multi) sèlman chwa a se fè struct a tèt li (oswa depi lontan, oswa ...) varyab la:

ekstèn struct struct extern; extern_struct.field -> {volatile struct s * t = & extern_struct; t-> jaden}

oswa

ekstèn depi lontan external_ll; extern_ll -> {temèt long tan * local_ll = & extern_ll; * local_ll}

Yon metòd twazyèm nan fè fas ak difikilte sa a se abandone 'oto-enpòte' pou senbòl la ofiske epi make li ak "__declspec (dllimport)". Sepandan, nan pratik ki mande pou lè l sèvi avèk compile-tan # defini yo endike si ou ap bati yon DLL, bati kòd kliyan ki pral konekte nan DLL la, oswa senpleman bati / ki lye nan yon bibliyotèk estatik. Nan fè chwa ki genyen ant metòd yo divès kalite rezoud 'adrès la dirèk ak pwoblèm konstan', ou ta dwe konsidere tipik reyèl mond l ':

Orijinal:

--foo.h ekst int arr []; - foo.c # mete "foo.h" anile prensipal (int argc, char ** argv) {printf ("% d \ n", arr [1]); }}

Solisyon 1:

--foo.h ekst int arr []; - foo.c # enkli foo.h "void prensipal (int argc, char ** argv) {/ * solisyon sa a se pou win32 ak cygwin; pa "optimize" * / volatil int * parr = arr; printf ("% d \ n", parr [1]); }}

Solisyon 2:

--foo.h / * Nòt: oto-ekspòtasyon sipoze (pa __declspec (dllexport)) * / #if (defini (_WIN32) || defini (__ CYGWIN__)) &&!! (defini (FOO_BUILD_DLL) || defini (FOO_STATIC )) # defini FOO_IMPORT __declspec (dllimport) #else # defini FOO_IMPORT #endif extern FOO_IMPORT int arr []; - foo.c # mete "foo.h" anile prensipal (int argc, char ** argv) {printf ("% d \ n", arr [1]); }}

Yon katriyèm fason pou fè pou evite pwoblèm sa a se re-postal bibliyotèk ou yo sèvi ak yon koòdone fonksyonèl olye ke yon koòdone done pou varyab yo ofansif (egzanp fonksyon set_foo () ak get_foo () ).

--disable-oto-enpòte

Pa eseye fè sophisticalted ki lye ak "_symbol" nan "__imp__symbol" pou DATAimports soti nan DLL.

--enable-runtime-pseudo-reloc

Si kòd ou gen ekspresyon ki dekri nan seksyon -enable-oto-enpòte, se sa ki, DATAimports soti nan DLL ak ki pa zewo konpanse, sa a chanje pral kreye yon vektè nan 'relaksasyon pseudo runtime' ki ka itilize pa anviwònman ègzekutabl ajiste referans nan done sa yo nan kòd kliyan ou.

--disable-runtime-pseudo-reloc

Pa kreye relocation pseudo pou non-zewo konpanse DATA enpòtasyon soti nan DLL. Sa a se default la.

--enable-extra-pe-debug

Montre plis enfòmasyon debogaj ki gen rapò ak oto-enpòte senbòl thunking.

- seksyon-aliyman

Ansanm aliyman nan seksyon. Seksyon nan memwa ap toujou kòmanse nan adrès ki se yon miltip nan nimewo sa a. Défaut pou 0x1000.

--stap rezève

--stap rezève , komèt

Espesifye kantite lajan memwa rezève (ak opsyonèlman komèt) yo dwe itilize kòm chemine pou pwogram sa a. Defo a se 2Mb rezève, 4K pran angajman.

--subsystem ki

--subsystem ki : pi gwo

--subsystem ki : pi gwo . minè

Espesifye subsystem la anba ki pwogram ou pral egzekite. Valè yo legal pou ki se "natif natal", "fenèt", "konsole", ak "posix". Ou ka opsyonèlman mete vèsyon an subsystem tou.

Enpòtan: Sèvi ak kòmandman an moun ( moun ) yo wè ki jan yon lòd yo itilize sou òdinatè patikilye ou.