Linux / Unix Command: Id

NAME

ld - Utilizà LD , u vince GNU

SINOPSIS

ld [ options ] objfile ...

DESCRIPTION

Ld combina un nummu di archivi d'oggettu è di archive, rilviva a so dati è ligami à riferenzi simbuli. U solitu l'ultimu passu à compilà un prugrammu hè di scorri ld .

Ld accertà i scrittori d'armi Command Line in un sughjettu di a sintaxe di l'Autore di l'Ordine di l'Editore di l'AT & T, per furnisce un cuntrollu esplicitu è ​​tutale di u prucessu di ligami.

Questa pagina mane ùn mancu descrizanu l'ughjettu di cumanda; vede u ld entry in "info", o a manual ld: u GNU Linker, per i détails completu nantu à u lenga di u cumandamentu è à l'altri aspetti di uGNU linker.

Questa versione di ld usa e bibliotege BFD per capita generale per operà nantu à schedari di ughjettu. Questu permetterà ld di leghje, cunghjuntà è scrivite alcunu scritti in parechji formi stampati - per esempiu, COFF o "a.out". I difetti formate ponu esse ligati per pruducia qualsiasi fugliale di ughjettu dispunìbule.

A parti di a so flàvebilità, u vince GNU hè più útil ca l'altri ligatori in furnisce una messa in diagnosi. Parechji linkers abbandunate l 'esekzione in seguitu dopu scontru un errore; quanduè pussibule, ld cuntinua chì eseguite esercitu, permette per identificà altre errore (o, in certi casi, per esse un schedariu di risorsa in spessu l'errore).

U GNU linker ld hà da riproducià un vastu situ di situazione, è per esse quant'è compatible as possible with other linkers. In u risultatu, tenete assai selezziunate per cuntrullà u so cumpurtamentu.

OPTIONS

U ligami soporta un vastu d' opere di linea , ma in u pratiche propiu pocu di elli sò in a so situazione particulare. Per esempiu, un usu frecuente di ld hè di ligà linii standard di l'Unix in un sistema Unix cunnessu standard. In un tali sistema, per ligà un schedariu "hello.o":

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

Questa dice a Ld a produci un schedariu chjamatu u risultatu cum'è u risultatu di ligà u file "/lib/crt0.o" cù "hello.o" è a biblioteca "libc.a", chì vene da i direttori standard di ricerca. (Vede a discussione di l'option -l ).

Alcune di l' opere di linea di ligna à ld pò esse specificatu à qualunque puntu in a linea di cummanda. In ogni casu, l'opcions chì invoca i schedari, cum'è -l or -T , pruvenenu à u legnu in legnu in u puntu à quale l'opzione apare in a linea di cumanda, relative à l'archivi d'ughjettu è à l'altri opere di file. L'opere parechje micca di scelte cù un argumentu diferenutu ùn sia micca avete più effetti, o anulate l'avvenimenti previsti (quelli più avanzati à a manca in a linea di mandatu) di quella scossa. Opzioni chì ponu esse specificatu in più di una volta sò notati in e descrizzioni quì sottu.

L 'argumenti non-opizione sò l'archivi d'oġġettu o l'archivi chì sò stati ligati. Puderanu a seguità, precede, o sia cunmbiti cù l'opere di linea, salvu chì un argumentu di scopu d'oggettu pò esse postu frà una opzione è a so argumentu.

In solitu, u ligame hè invucatu cù almenu un schedariu d'ughjettu, ma pudete indicà quelle altre furmulariu di ricercure binariu cù -L , -R , è u script script lingua. Se ùn ci hè micca specificatu alcunu apparenti di l'ingridienti binarifidi, u vincheru ùn mancu micca prucessu, è face u messagiu No items input .

Se u linker ùn pò micca ricanuscià u furmatu di un schedariu d'oggettu, assumete chì hè un script scripture. Un script especificatu da stu modu aumenta a scrittura prima di u ligaturu usata per u ligame (o l'script scriptur per l'usu predeterminatu o quellu specificu cù l'usu -T ). Sta funziunalità permette chì u linker per ligami contra un schedariu chì pare ch'ellu hè un oggettu o un archiviu, ma aduprate solu di definisce certi valori di simbulu, o usa "INPUT" o "GROUP" per carica altre oggetti. Avè chì spicificate un script in questa manera si addende u scrittore linker principale; utilizate l'opzione T per rimpiazzà a scrittura di u ligame perttatu.

Per opcions chì so nomi sò una sola carta, l'argumintazzioni di l'opzione ci devi à seguità a lettera di l'opzione senza spaziu in u spaziu interu, o esse furnitu comi argumintazzioni separati da seguita da l'opzione chì deve bisognu.

Per opcions chì i nomi sò parechje littri, un solu attore o dui pudete precede u nome di l'opzione; per esempiu, -traccia-simbulu è - traccia-simbulu sò equivalenti. Nota - ùn hè una sola stata per questa regula. Opere di lettera multilingua chì accuminzanu cù un minùcule 'o' pò esse precede da dui spichi. Questa hè di riduce a confusion cun l'opzione -o . Cusì per esempiu, l' articràticu si mette u nome di u schedariu di u risultatu à a magia, quale - òmanu ponu a bandiera NMAGIC nantu à u risultatu.

L'argumintazzioni à l'opzioni di letteratura multiplica si deve esse separati da u nome di l'opzione da un signu ugguali, o esse attribuiti in argumenti solu ghjustu dopu à l'opzione chì u dumandassi. Per esempiu, --trace-simbulu foo è --trace-symbol = foo sò equivalenti. L'abbrevazioni unichi di i nomi di l'opere di letteratura multipla sò accettati.

Nota - se u liggeru hè invucatu indirettu, per un compilatore (per esempiu, gcc ), quandu tutti l'aiutu di a linea di cumanda d'invellatore sò d'esse prefixed da -Wl, (o quellu chì hè appruvatu per u compilatore di compilatore particulari) cusì:

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

Questu hè impurtante, perchè altri u compiu di u prugrammu di compilatore pò silenziu l'addulurate l'opzione ligne, è resultendu un vincenu mala.

Eccu un tavulinu di i switches di linea di cumanda generica accettati da u linku GNU:

-un keyword

Questa opzione hè supportatu per a compatibili HP / UX. L' argullu chjave per esse unu de l' archivi di caghjà , cumunu , o di modu predeterminatu . -archive funziona equivalente à -Baticu , è l'altri dui persone chjave funziona equivalenti à -Bdynamic . Questa opzione pò esse aduprata parechje volte.

- Una architettura

--architecture = architettura

In u libru veru di ld , l'opzione hè ùtule solu per a famiglia Intel 960 di l'architetti. In quellu cunfigurazione ld , l'argumentu di l' architettura identificeghja l'architettura particulare in a famiglia 960 chì facenu certi salvagwardi è mudificà a percorsu di ricerca di l'archiviu-biblioteca.

I lumi futuri di ld puderanu appruvà a funziunalità similarità per e altre famiglie di architettura.

-b input-format

--format = input-format

Ld puderia esse cunfigurati per soporta più di un tipu d'oggettu. Se u vostru ld hè cunfigurata stu modu, pudete aduprà l'opzione -b per specifica u formatu bariu per i schedari di u cuntattu di l'oggettu seguenti questa opzione nantu à a linea di cumanda. Ancu quandu ld hè cunfigurata per appoggiu formati d'ughjettu alternativu, ùn avete micca spicificà cusì, quandu ld deve esse cunfigurata per esse da un formatu di ingressu predeterminatu in u formatu più cumune in ogni màquina. input-format hè una stringa di testu, u nome di un formatu particulari sustene da e biblioteche BFD. (Pudete tà listine formatei binaria cù objdump -i .)

Pudete vulete utilizà sta scelta se vi cunnetta i fugliali cù un formatu binariu insoliticu. Pudete ancu aduprà -b per cambià formati in esplicitamente (quandu ligà u fugliale di ughjettu di furmatu distinti), cumprese -b input-format before each group of object files in un format particular.

U furmatu predefinitu hè presu da l'ambienti variable "GNUTARGET".

Pudete puru definisce u formatu di l'inpute da un script, usendu u cumandimu "TARGET";

-c MRI-commandfile

--mri-script = MRI-commandfile

Per a cumpatibilità cù i ligami produtti da MRI, ld accetta scritture scritte scritte in un locu di comanda altru restrittu, scritte in a Securizazione di Scripts Compatible Script MRI di a documentazione GNU ld. Introduce scripts MRI scripti cù l'opzione -c ; utilizate l'opzione T per correr scrivi linker scritte in u scrittore general ld scrittura generale. Sì MRI-cmdfile ùn esisti micca, ld a circonda di cerca in i direttori spicciziati da alcunu l'opzioni L.

-d

-dc

-dp

Queste trè opzioni sò equivalenti; e forme multipliche sò sopurità per a compatibilità cù altre ligami. Assignate l'espazio à i simboli cumuni ancu se un schedariu di prughjettu dispunibile hè specificatu (cù -r ). U scrittu script "FORCE_COMMON_ALLOCATION" hà u listessu effetti.

-e entry

- in = intrata

Aduprà l' accessu cum'è u simbulu esplittitu per eseguimentu iniziale di u vostru prugramma, più di u puntu d'intro duzzione predeterminatu Se ùn ci hè micca un simbolu chjamatu l' ingressu , u vintador pruvà parse l' ingressu com'è un numeru, è utilizate chì cum'è l'indirizzu di l'indirizzu (u numaru serà interpretatu nantu à basa 10; puderete aduprate un 0x líder per a base 16, o un principale 0 per a base 8).

-E

- Esportu-Dinamicu

Quandu crea un executable dinamicamente ligatu, aghjunghje tutti i simboli à a tabella di simbulica dinamica. A simbulu di simbulica dinamica hè u settore di simboli chì sò visibilii da l'objeti dinamichi in tempu d'esèrcitu.

Se ùn utilizate micca sta funziunalità, a simbulu di simbulica dinunisa cuntene normalment solu quelli simbuli chì sò riferiti da qualche objettu dinamicu chjamatu in u ligame.

Se utilizate "dlopen" per carricà un oġġettu dinamicu chì deve riferite à i simboli definite da u prugramma, in quantu à qualchì altru oggettu dinamicu, puderete bisognu di bisognu à utilizà sta opzione à vede u prugramma stessu.

Pudete ancu aduprà l'script scriptu à cuntrole ciò chì i simboli sò deve aghjuntu à a table di simbulu dinamica si u formatu di viaghju accunsente. Vede a descrizzione di --version-script in @ ref {VERSION}.

-EB

Ogni objettivi big-endian. Queste affetta u formatu di uputatu predeterminatu.

-EL

Ubligatorii Ogni obxettivu. Queste affetta u formatu di uputatu predeterminatu.

-f

- nomu iniziuali

Quandu crea un oghjettu cumunu ELF, fate u campu internu DT_AUXILIARY à u nome indicatu. Questa ci conta u vincemu dinamicu chì a simbulu di simbulu di l'ughjettu cumuni si deve esse usatu com un filtru d'assezurazione in a tabella di simbulu di u nome di l'objettu cumuni.

Se dopu avete ligatu un prugramma contra stu filtru in ughjettu, dopu, quandu pudete aduprà u prugramma, u vincemu dinamicu vede u campu DT_AUXILIARY. Se u vincemu dinamico resuverna ogni simbulu di l'ughjettu di u filtru, primer verificà chì esse una definizione in u nome di l'ughjettu cumuni. Se ci hè unu, serà utilizatu invece di a definizione in u filtru l'oggettu. U duminiu di ughjettu cumuni ùn esiste micca bisognu. Cusì u nome di l'objettu cumuni pò esse usatu per furnisce una implementazione alternattiva di certe funzioni, forsi per debugging o per un spettaculu specificu di machine.

Questa opzione pò esse spiccifica più di una volta. L'intrattenimentu DT_AUXILIARY sarà creatu in u ordine in u quale anu nantu à a linea di cummanda.

-F nome

- nome di filtrazione

Quandu crea un oghjettu cumunu ELF, fate u campu DT_FILTER internu à u nome indicatu. Questa ci conta a ligne dinamica chì a simbulu di simbulu di l'ughjettu cumuni chì hè stata creata deve esse usata com un filtru in a tabella di simbulu di u nome di l'ughjettu cumuni.

Se dopu avete ligatu un prugramma contra stu fegatu filtru, dopu, quandu pudete aduprà u prugrammu, u vincemu dinamicu vede u campu DT_FILTER. U vinculatore dinamica rescindirà i simbuli sicondu a simbulu di u filtru di l'ughjettu di u filtru cum'è di solitu, ma hà in veru liganu à e definizione truvate in u nome di l'ughjettu cumuni. Cusì l'ughjettu di u filtru pò esse usatu per selezziunà un subgettatu di i simboli prisentati da u nome di l'ughjettu.

Arcuni vitture anu utilizatu l'opzione F à l' almanacu di una compilazione indice per specifierà un furmatu di ughjettu in u fugliale di u cuntattu di u cuntenutu. U linker GNU utilizà altre mecanizazioni per questu scopu: l'- b , --format , --oformat options, l'ordine "TARGET" in scritturi linker è a "GNUTARGET" variable d'ambienti. U linker GNU ignora l'opzione F à l'ùn creà un ughjettu cumunu ELF.

nome finale

Quandu crea un oghjettu executable o cumpratu ELF, chjamate NAME quandu l'ughjettu executable ou cumune hè spargugliatu, stendu DT_FINI à l'indirizzu di a funzione. Da u situ, u vincher usa "_finanza" cum'è a funzione di chjamà.

-g

Ignoratu. Fornite per cumpatibilità cù altre uttene.

-G value

--gpsize = valore

Determinà a dimensione massima di l'oggetti per esse ottimizzati cù u registru GP à grandezza . Questa solu hè significativa per u formatu di l'architettu di l'ughjetti cum'è MIPS ECOFF chì sustene a muneta oggi grossi è chjuchi in diverse secici. Questu hè ignurata per un altru furmatu di ughjettu.

-h nome

-ameame = nomu

Quandu crea un oghjettu cumunu di ELF, fate u campu internu DT_SONAME à u nome indicatu. Quandu un eseguitu pò esse ligata cù un oghjettu cumuni chì hà un field DT_SONAME, quandu l'eseguitu pò esce u ligame dinamica intenta aghjà cumprà l'ughjettu cumuni di u campu DT_SONAME in quantu chì u usu di u nome di l'archive datu à u vinle.

-i

Fetta una ligata incrementali (listessa manera l'opzione -r ).

-init nome

Quandu crea un oghjettu executable o dumandatu ELF, chjamate NAME quandu l'ughjettu executable o dumandatu hè carbuatu, fendu DT_INIT à l'indirizzu di a funzione. Per automaticamente, u vintador usa "_init" com'è a funzione di chjamà.

l' archiviu

--library = archiviu

Aggiunate archive archive archive à a lista di schedari per ligami. Questa opzione pò esse aduprata parechje volte. Ld cercarà a so strada-lista per l'occurrences di "libarchive.a" per ogni archive especificatu.

In i sistemi chì sustene e bibbiote libri, possu ancu cercà e bibbiutte cù estensioni altru di ".a". Specificamenti, nantu à i sistemi ELF è SunOS, ld cercarà un direttori per una biblioteca cù una estensione di ".so" prima di cercà unu cù una estensione di ".a". Per cunvenzione, una estensione ".so" indica una libreria cumuna.

U ligame cercanu un archiviu solu una volta, in u locu induve hè specificatu nantu à a linea di cummanda. Se l'archiviu di definisce un simbulu chì era indefinitutu in questu un oggettu chì pareva prima l'archiviu nantu à a linea di cumanda, u vincheru compone u schedariu appiccatu di l'archiviu. In ogni modu, un simbulu indefinitu in un oggettu chì appartente più tardi à a linea di cummanda ùn pruvucarà micca u vincula per ricercà l'archiviu novu.

Vede a - ( optione per un modu di forze u vintador per a ricerca in archivi parechji volte.

Pudete listà u stessu archiviu parechji volte in a linea di cummanda.

Stu tipu di ricerca d'archivi hè standard per i linkers Unix. In ogni casu, se tu si usa ld aAIX, nota chì hè diffirenti di u cumpurtamentu di u linker AIX.

-L searchdir

--library-path = searchdir

Aghjunghjite a percorsu di ricerca per a lista di viaghji chì ld cercà per biblioteche archivi è scripts di cuntrolli di ld . Pudete aduprà sta scelta qualcosa di parechji volte. I cartulari sò cercati in l'ordine in u quali sò specificate nantu à a linea di cummanda. L'annunzii diretti in a linea di l'ordine sò cercati davanti à i direttori predeterminati. L'opzioni di L-applicanu à l'all -l options, independentemente di l'ordine in quale l'opzioni pareanu.

Se a busita principia cù "=", u "=" serà rimpiazzatu da u prefettu di u sistema , una ruta specifica quandu u ligame hè cunfiguratu.

U settore predeterminatu di e strade percorsu cercati (senza esse specificatu cù -L ) dipennà di quale u modulu di emulazione ld hè utilizatu, è in certi casi ancu nantu à quandu era cunfigurata.

I camini pò esse specificatu in un script da ligame cù l'usu "SEARCH_DIR". I Direttore spicciati questu modu si cercanu à u puntu in quale l'script scriptur ligale appareva in a linea di cummanda.

-m emulation

Emulate l' emulation linker. Pudete scuntate l'emulazioni dispunibule cù a --verbose o -V options.

Sì l'usu ùn hè micca usatu, l'emulazione hè presa da l'ambiguu "LDEMULATION" di l'embiu di l'ambiente, se questu hè definitu.

Inutile, l'emulazione predica dipende cumu u liggeru era cunfiguratu.

-M

--print-map

Impressjule un ligame map à u standard output. Un ligame mape furnisce infurmazioni nantu à u ligame, cumpresu i seguenti:

*

Quandu l'architetti di l'ughjettu è i simbuli sò mapati in memoria.

*

Cumu si scrivevi simboli cumuni

*

Tutti i membri di l'archiviu includeu in u ligame, cù una menziune di u simbulu chì hà causatu à u membru di u archiviu per esse purtatu.

-n

--nmagic

Apagar l'aiutu di a pagina di e rùbbriche, è marcate l'output cum'è "NMAGIC" se possu.

-N

--omagic

Determinà i textuale è e sezzioni di dati per esse leghjite è esse scritta. Inoltre, ùn pagine micca alignate u segmentu di dati, è disable liganu contra librerii cumuni. Se u formatu di u contu utteneru supportu numeri di magia Unix, marche l 'output com "OMAGIC".

--no-omagic

Questa opzione annuncia a maiò parte di l'effetti di l'opción N. U settore a sezione di testu per esse solu di lettu, è esce u segmentu di dati per esse alineata di pagina. Nota - sta scelta ùn vi permette lincà contra e libartà cumuni. Utilizazione - Dinamicu per questu.

-o output

--output = output

Utilizà u risultatu cum'è u nome per u prugramma pruduciutu da ld ; s'ellu sta opción ùn hè micca specificatu, u nomu a.out hè utilizatu da u situ. U scrittu script "OUTPUT" pò ancu specifichi u nome di schedariu di u risorsu.

-O livellu

Se u nivellu hè un numeru valuri più grande di cero ld optimizeghja u prossimu. Questu pò piglià più largu è, per quessa, probabilmente sia solu esse attivatu per a finali binariu.

-q

--emit-relocs

Trascendere e prucezioni di rilucazione è u cuntenenu in i cungregulati cunchiuduti. L'analisi d'opmentu Postu è l'uttimisioni di ottimisazione puderanu bisognu di sta informazione per fà esse realizatu modificazione curretta di l'eseguitu. Questu risultatu in esse executable maiori.

Questa opzione hè oghje soprappu solu in i plataformi ELF.

-r

--relatable

Generate output relocated --- ie, generate un schedariu di uputu chì pò esse funziunate cum'è ingaghja à ld . Questu hè spessu chjamatu ligami parternu . Comu effetti di u latinu, in ambienti chì sustenenu i numuli di magia Unix, sta opción ancu puru u numicu magicu di u filu di uputu à "OMAGIC". Sì sta strumentu ùn hè micca specificatu, un schedariu assolutu hè pruduciutu. Quandu si ligate à i C + +, sta funzione ùn hà micca resolviutu referenze à i constructori; fà per quessa, utilizate -Ur .

Quandu un file input ùn hà micca u stessu formatu cum'è u schedariu di uputatu, a ligami parziale sò sopurte solu chì u file di a ricerca ùn cuntene nudda rilucazione. I difetti di furmati di pruduce ponu più restrizioni; per esempiu, certi formati per "a.out" ùn sò micca sustegnu ligami parli cù iputtu di ricerca in altri formate.

Questa opzione ùn hè listessa cosa cum'è -i .

-R filename

--just-symbols = filename

Liame simule i nomi è i so indirizzu di u filename , ma ùn si trasferenu micca o inclùdinu in u vostru contu. Questu permette à u vostru articulu output per riferiremu simbulicamenti à locu assolutu di memoria definita in altri programmi. Pudete aduprà sta opción più di una volta.

Per a compatibilità cù altre ligami ELF, se l'opzione R hè seguita da un nome di u dirittule , in casu d'un nome di scrittore, hè trattu com'è l'opción -rpath .

-s

- strap-all

Omite tuttu l'infurmazione di simbulu da u schedariu di uputtu.

-S

- strip-debug

Omite l'usu di simbulu di u debugger (ma micca tutti i simboli) da u schedariu di uputtu.

-t

--trace

Impressà i nomi di i file di ingressu cum'è ld prucessa.

-D script file

--script = script file

Utilizare u scrittore cum'è u script scripture. Questu script in u sustegnu script di l'ligami predeterminateur (di più di aghjunghje), perchè u schedariu di commandfile deve specificà tutte ciò chì necessariu per discrive u schedariu di uputtu. Se u scrittore ùn hè micca esiste in u regiu di u cartulare, "ld" cerca in i direttori spicializati da a precedente -L opcions. L'opere multiplicate l' accuncienu .

-u simbulu

--undefined = sìmbulu

U sìmbulu di forza per esse ingressu in u schedariu di uputtu cum'è un simbulu indefinitu. Fate cusì pò esse, per esempiu, attivà u ligami di i moduli supplementu da e bibbiote standard. -u pò esse ripetuta cù argumenti d'opzioni diferenti per ingressà simboli più indefiniti. Questa opzione hè equivalente à u cumandante di scrittore "EXTERN".

-Ur

Per qualsu altru à l'altru cà C ++, sta scelta hè equivalente a -r : pruvucassi a risoluzione rilassante (per esempiu, un schedariu di uputu chì pò esse funziunate cumu ingressu à ld . Quandu l'aghjunghje programmi di C + +, -Ur ùn si ponu esse riferimenti in i constructori, à u cuntrariu di -r . Ùn travaglià micca per utilizà -Ur à i schedari chì sò stati attaccati cù -Ur ; volta chì a tavola di u constructore hè statu custruita, ùn pò micca aghjuntu. Utilizate -Ur solu per l'ultimu ligami partziale, è -r per l'altri.

--unique [= SECCIÓ ]

Crea una settita per u sorsu separatu per ogni parte di l'articulu di risponde à SECCIale , o se u sceltu di l'articulu cunzultativu dispunibule falta, per ogni parte di l'articulu orfanu. Una secunea orfana hè unu ùn hè micca spicatu in un scrittore linker. Pudete puru aduprà st'attazione parechji volte in a linea di cummanda; Hè impedisce a fusione normale di e secezioni d 'ingaghjamentu cù u stessu nomu, funziona messa à a risultazione di a risorsa in un script linker.

-v

--version

-V

Indicate u numaru di versione per ld . L'opzioni V vede ancu liste l'emulazioni supportati.

-x

- discìppule tuttu

Elimine tutti i simboli lucali.

-X

--valentin-locali

Elimine tutti i simboli di u locu tempurale. Per a più di metalli, questu simbulu locale chì i nomi cummincianu cù L.

u simbulu

--trace-symbol = sìmbulu

Impressjbe u nome di ogni unnessu file in quale si parechje simbulu . Questa opzione pudete esse datu qualcosa di volte. À parechji sistemi hè necessariu di appicurà un underscore.

Questa opzione hè ùtule quandu avete un simbulu indefinitu in u vostru ligame ma ùn sanu micca di induve vene a riferenza.

U viaghju

Agghicate a modu à a strada di ricerca di a biblioteca libera. Questa opción hè stata per a compatibilità di Solaris.

-z keyword

I clause di ricunniscenza sò "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" è "nocopyreloc ". L'altri password sò ignorati per a compatibilità di Solaris. "initfirst" marca l'ughjettu per esse iniziatu prima in l'intime before any other objects. "interpose" marca l'uggettu chì a so simbulu di simbuli interpose prima tutti i simboli ma l'eseguitu primariu. "loadfltr" marca l'ogghjettu chì i so filtees si tratanu immediatamenti à u runtime. "nodefaultlib" marca l'ughjettu chì a ricerca di e dependenziali di questu l'ughjettu ignora qualsiasi pratichi di ricerca di biblioteca. "nodelete" marca l'oggettu ùn deve esse micca dispunibile in eserciziu. "nodlopenu" marca l'ogghjenu micca dispunibili per "dopughereu". "nuduminu" marca l'ughjettu pò micca esse di vintura di "dldump". "ora" marca l'ughjettu cù l'allughjamentu runtime senza vjante. "origine" marca l'ogghjettu pò cuntenenti $ ORIGIN. "defs" disuverle simboli indefiniti "muldefs" permette parechje definizione. "combreloc" combina diversi spezii di reloc è ghillesi per fà un simbulu dinamica cache carte possu.

"nocombreloc" inutilizeghja i parechji rùgnuli rilucalmenti. "nocchechistrello" inutilizà a pruduzzione di relocks.

- ( archivi -)

- archivi di sta-gruppu - in-gruppu

L' archivi debbanu esse una lista di schedari di archiviu . Puderianu sò o nomi di scrittiche scritte, o -l options.

I archivi specifichi ci anu cercatu ripetutamente finu à chì ùn sò micca riferiti novi referenze indefiniti. Normalmente, un archiviu hè cercatu solu una volta in l'ordine chì hè specificatu nantu à a linea di cummanda. Se un simbulu in quellu archiviu hè necessariu di risolve un simbulu indefinitu chjamatu da un ughjettu in un archiviu chì vene appressu dopu à a linea di cumanda, u linker ùn puderia micca riducirle questa referenza. Per agrupà l'archivi, tutti sò ricercati repetidamenti finu à chì e tutte e riferenzi pussibuli sò resoluzi.

Aduprà sta opzione possa un costu effettuatu di costu. Hè megliu aduprà solu quandu sò esse corsi inevitabbili riferimenti trà dui o più archivi.

- accessu-architettu-unknown-unknown-architetture

--no-accept-unknown-input-arch

Diciunisce u ligame per accettà l'archivi di l'inpute chì l'architettura ùn pò esse ricunnisciute. U supposu hè chì l'Usuariu sapi ciò ch'elli facenu è deliberatamente vulete ligà in sti schedari di ingressu sfarenti. Questa era u cumpurtamentu predettu di u linker, prima di a liberazione 2.14. U cumpurtamentu predeterminatu da a liberazione 2.14 in seguente hè di ricusà l'articuli d'accostu, è cusì l' opzione d'accessu-architettu -acccept-unknown-arch hè aghjuntu à restituisce u cumpurtamentu anticu.

-sistema di basa

Questa opzione hè ignora per a cumpatibilità SunOS .

-Bdynamic

-dy

-call_shared

Link contra libreri dinamichi. Questa hè solu ghjustificata nantu à e plataforme per a quale aghjunghjenu e bibbiutte cumuni . Questa opzione hè normalment u default in such platforms. I varianti varianti di sta funziona sò di cumpatibilità cù diversi sistemi. Pudete puru aduprà sta opzione parechje volte nantu à a linea di cummanda: affecca a biblioteca per a ricerca -l opcions chì seguitanu.

-Group

Pone a bandiera "DF_1_GROUP" in l'intrata "DT_FLAGS_1" in a secunna dinamica. Questu hè fatta l'accumpagnamentu di u moffellu per trattà a ricerca in questu ughjettu è e so dependenziali per esse realizatu solu in u gruppu. --no-undefined hè implitita. Questa opzione hè solu ghjinirosa di e plataformi l'ELF chì sustenemu librarii cumuni .

-Bestatic

-dn

-non_shared

-static

Ùn vincere micca e bibbiutte cumuni. Questa hè solu ghjustificata nantu à e plataforme per a quale aghjunghjenu e bibbiutte cumuni. I varianti varianti di sta funziona sò di cumpatibilità cù diversi sistemi. Pudete puru aduprà sta opzione parechje volte nantu à a linea di cummanda: affecca a biblioteca per a ricerca -l opcions chì seguitanu.

-Bsymmbolic

Quandu crea una libreria cumminciata, ligame à referenze à i simboli globale à a definizione in a biblioteca libartaria, in casu. Nurmalmentu, hè pussibule per un prugrammu cuntattu cù una libreria cumuni per annullà a definizione in a libreria cumuni. Questa opzione hè solu bisognu à l'ELFplatforms chì sustenemu librarii cumuni.

--check-sections

--no-check-sections

Pè u ligame ùn cuntene l'indirizzi di secció dopu chì sò stati assignati per vede s'ellu ci sò qualsiasi superposi. Nurmalmentu u ligame cumerciarà stu cuntrollu, è se trova qualunque eventuale cumu furnisce messagi d'errore adattati. U ligame di cunnosce, è ùn faciisce cuncessione per sezione in overlays. U cumpurtamentu predeterminatu pò esse ristrutturate usendu l'aiutu di a linea di cumanda --check-sections .

--cref

Pruvene una tabella di cruciali. Se un schedariu di cartariu di linker hè generatu, a tabella di cruciali di ricerca hè stampata à u cartulare di u cartariu. Inutili, hè stampatu in u standard output.

U formatellu di a tavula hè simpaticamenti sèmplice, per ciò chì pò esse facilmente tramandatu da un script se hè necessariu. I simboli sò stampati, ordenatu da nome. Per ogni simbulu, vene una lista di nomi di scrittori. Se u simbulu hè definitu, u primu schedariu esse chjamatu u locu di a definizione. I schedari restanu cuntenenu referenze à u simbulu.

--no-define-cumunu

Questa opzione inhibisci l'assignazione di l'indirizzi à simboli cumuni. U scrittu script "INHIBIT_COMMON_ALLOCATION" hà u listessu effetti.

L' opzione cum'è --no-define-cumuni permette di discepling la decisione di assignà indirizzi à i simboli cumuni da a scelta di u tipu di u risorsa; altri un furmatu di prughjettu non-Relocatable furzà l'attribuzione indirizzu à i simboli Comuni. Utilizare --no-define-common permette i simboli cummechi chì sò riferiti da una libreria cumuni à esse diretta indirizzu solu in u prugramma principare. Questi eliminà u spaziu duplicatu ùn hè micca utilitate in a libreria cumuni, è impedisce ancu alcune cunfusione per quelle di u dumiculu difettu duoppu quandu sò assai moduli dinamichi cù ricercati per a ricerca spezializate per a risulazione simbulu à u runtime.

--defsym symbol = espressione

Cridite un simbulu globale in u schedariu di u contu, chì cuntene l'indirizzu assolutu da l' espressione . Pudete puru aduprà sta opzione quant'è tanti volte com'è necessaria per definisce diverse simboli in a linea di cumanda. Una forma limitata di aritmetica hè soporta per l' espressione in questu cuntestu: pudete darà un constantu hexadecimale o u nome di un simbulu existente, o utilizate "+" è "-" per aghjunghje o reste constante hexadecimale o simboli. Sè avete bisognu d'esprissioni più elaborate, cunfirmate l'usu di l'usu di u cumandante da un script. Nota: ùn deve esse micca un spaziu biancu trà u simbulu , u signu ugguali (`` = ''), è l' espressione .

--demangle [= stile ]

--no-demangle

Queste selezziunate cuntrolate se desimblangile simule nomi in missaghji d'errore è altri ritorni. Quandu u linker hè statu dettu à demancià, prova di presentà i nomi di simbulu in una manera leghjiebile: chjare u più impurtanti si sò utilizati da u formatu di l'archiviu di ughjetti, è cunvertece u nome di simbulu manghjatu C ++ in usu di leghjitimi utilizatori. Difatti compilaturi sò diversi stili mangles. L'argumintazzioni di stiluttante dispalibbili opiate unu pò esse usatu per ellu un modu demangling adattatu per u compilatore. U ligame diventerà per demurità solu s'ellu ùn hà micca attivatu l'embiu di l'ambienza COLLECT_NO_DEMANGLE . Questa opzioni puderanu esse usatu per annullà u predeterminatu.

- Archive linker dinamic

Pone u nome di u linker dinamica. Questa hè solu sensu quan genera esegwiezi dinamicamente ligate ELF. U linker dinamica predeterminata hè normale corretta; Ùn pudete micca aduprà micca se ùn cunnosci ciò chì site.

- parechji relocs

Questa opzione hè solu sensu quan ligame MIPS incognito codice PIC, generatu da l'opere parechje à pic à u compilatore GNU è l'assemblatore. Fate u linker per creà una tavula chì pò esse aduprata in tempu d'esse per rilucazione di qualsiasi dati chì anu stati initializzati à i valori. Vede u còdice in testsuite / ld-empic per i dettagli.

- avis avisatiche

Tratene tutti i preghjudizii cum'è i sbagli .

--force-exe-suffix

Assicuratevi chì un schedariu di pruputu ha un suffissu .exe.

Se un furmatu di prughjettu di stazione assuciatu cù u vostru successu ùn hà micca un suffissu ". Exe " o " .dll ", questa opzione di forza à u vinle per copre u schedariu di uputatu à unu di u stessu nomu cù suffissu ".exe". Questa opzione hè utilmente utili when using Unix makefiles mudificate in un ospitante Microsoft Windows, postu chì qualchì versione di Windows ùn curreanu una imagina solu s'ellu ùn finisci in un suffissu ".exe".

--no-gc-sections

--gc-sections

Hà attivà a cullizzioni di i bundeddi di secche in inutilità. Hè ignoratu nantu à miriose chì ùn sustene micca sta scelta. Questa opzione ùn hè cumpatibili cù -r , nè mancu averia sia utilizata cù una ligami dinamica. U cumpurtamentu predeterminatu (di ùn esercite sta retagliare di u spaziu ) pò esse risturata spicificendu --no-gc-sections in a linea di cumanda.

--help

Impressà un summariu di l'opere di linea di mandate nantu à u standard output è sertà.

--target-help

Impressà un summariu di tutti l'opzioni specifichi destinati à u standard à u risu è surtite.

-Map mapfile

Impressjule un ligame map à u cartulariu file . Vede a description of the -M option, above.

--no-keep-memory

Ld normalment optimizeghja per a vilicità per u memoria da u cache di i simbululi simule di i risultati in memoria. Questa opcione dice Ld invece ottimisimu per l'usu di memoria, rinannendu i tavule di simbulu quantu necessariu. Questu pò esse dumandatu se ld cede da u spaziu di memoria mentre ligame un grande esecutivu.

--no-undefined

-z defs

Normalmente quandu crea una libreria cumunità non simbulica, simboli indefiniti sò permessi è esse da esse risolta da u pumparatore runtime. Queste l'opzioni nant'à un simbulu senza definitu.

--allow-multiple-definition

i muldefs

Nurmale, quandu un simbulu hè definitu e multipliche volte, u ligame diventerà un fatal error. Queste l'opcions permette parechje definizzioni è a prima definizione serà utilizata.

--allow-shlib-undefined

Permettenu micca simboli indefiniti in l'uggetti cumunu ancu quandu --no-undefined hè stallatu. U risultatu netu serà chì i simboli indefiniti in l'articuli persunale anu sempre attivanu un errore, ma i simboli indefiniti in l'uggetti cumuni se sarete ignorati. L'implementazione di no_undefined faci a supposizione chì u vince di u mozambure se choke à i simboli indefiniti. In ogni casu ci hè almenu un sistema (BeOS) chì i simboli indefiniti in bibliotefariali culligati hè normale, postu chì u kernel arrincò in tempu di tile per selezziunà quella funzione hè più appruvata per l'architettura attuale. IE hà sceltu dinamicu una funzione apropiazione di memset. Hè apparentatu chì hè ancu normale per HPPA di e bibliotefichi cumuni di avè micca simboli indefiniti.

--no-undefined-versione

Nurmale, quandu un simbulu hà una versione indefinita, u ligame ignurà. Questa opzione ùn palesa i simboli cù a versione indefinita è un errore fatale se emu emessu.

--no-warn-mismatch

Nurmalmenti ld dà un'errore se tentate ligà inseriti file files that are imatched due to some reason, forsi perchè sò compilatu per parechji processatori o per diverse endiannesses. Questa opcionu dici a lui chì ci vole in silenziu permessu di sti errore pussibuli. Questa opzione solu averebbe utilizatu cù cura, in casu quandu avete fattu qualcosa n'azioni speziale chì assicura chì i buggliate sò inutilizati.

--no-whole-archive

Apagar l'effettu di l' opzione architettore - allora-archive per i schedarii archivi sussegwenti.

--noinhibit-exec

Mantene u cartulare di u schedariu esse executable sempre chì sia sempri inutilizativa. Nurmalmentu, u ligame ùn pruduce micca un schedariu output si trova i errore durante u prucessu d'accordu; si sali senza scrive un schedariu di uputu chì quiche u qualchì errore hè di qualunque.

-nostdlib

Solu librettu di a ricerca in repertorii diretti in a linea di cummanda. Bibliutte di i cartulari specifichi in scritturi linker (inclusi i scritturi linker especificate nantu à a linea di cummanda) sò ignorati.

- Format di salute

Ld puderia esse cunfigurati per soporta più di un tipu d'oggettu. Se u vostru ld hè cunfigurata stu modu, pudete aduprà l' opcione --formate per indicà u formatu bariu per u schedariu di upertu di upertu. Ancu quandu ld hè cunfigurata per appoggiu formati d'ughjettu alternativu, ùn avete micca spicificà cusì, quandu ld deve esse cunfigurata per produttu cum'è un formatu di predefinitu furmatu u formatu più cumuni in ogni màquina. u formatu di salute hè una stringa di testu, u nome di un formatu particular soporta da i biblioteche BFD. (Pudete listà i formate binariu dispunibile cun objdump -i .) U scrittore script "OUTPUT_FORMAT" pò esse specificà u formatu di risultatu, ma sta opción anulisce.

-magica

Questa opzione hè ignucata per a compatibilità Linux.

-Qy

Questa opzione ùn hè ignurata per a cumpatibilità SVR4.

- rélax

Una opzione cù effetti di a dependenza di màquina. Questa opzione hè soprappi solu nantu à qualchi mira.

In certi pratiche, l'opzione realexammu cumprenda optimizazioni globale chì si ponu pussibule quandu u ligame solu indirizzà à u prugramma, cum'è modi d'indirizzu di rinfrescenu è sintetizà infurmazioni novi in ​​u schedariu d'upertu di upertu.

In certi ponti sti ligami l 'optimizazioni globi di u tempu pò esse affucatu simbulu di u cumpletu executable impossible. Questu hè cunnisciutu per esse u casu per u Matsushita MN10200 è a famiglia di processatori MN10300.

In i plataformi induve hè micca supportatu, --relax hè accettatu, ma ignora.

- retain-symbols-file filename

Ritorna solu i simboli in listessa filename , scaccià tutti l'altri. U filename hè solu un scrittu chjaru, cun un sìmbulu per line. Questa opzione hè particularmente utile in i medii (cum'è VxWorks) induve una grande tabella di simbulu globale hè accumulita pocu, per conserva a memoria in tempu d'aghjurnà.

- retain-symbols-file ùn scrivarà i simboli indefiniti, o simboli necessariu per a rilucazione.

Pudete definisce solu - retain-symbols-file una volta in a linea di cummanda. Hè annullatu -s è -S .

-rpath dir

Aghjustate un direttu in u percorsu di ricerca di u libru di i runtime. Questu hè usatu quandu ligame un ELFexecutable cun objecti cumunu. Ogni argumentu di u rrpatenu sò cuncatenati è passatu à u linker runtime, chì u usserva per localizza objecti cumuni in runtime. L'opzione- rpath hè ancu utilizata à situate l'uggetti cumuni chì sò necessariamente cose da l'ughjettu cumuni explicitamente inclusi à u ligame; vede a descrizzione di l' opzione ligami . Se -rpath ùn hè micca usatu quandu ligame un esse executable ELF, u cuntenutu di l'inturnianza à l'inturnianza "LD_RUN_PATH" serà utilizatu s'ellu hè definitu.

L'opzione di -rpath pò ancu esse aduprata in SunOS. Per modu di predefinitu, nantu à SunOS, u vincheru accuncià una ricerca di riccione da l'allora di l'opzioni di l'L. Se se usa una opción -rpath , a strada di ricerca di l' adcettura esse furmata solu cù l'opzioni -rpath , ignore l'opzione L. Questu pò esse utili when using gcc, chì aghjunghje parechje -L opcions chì pò esse muntatu di schedarii di NFS.

Per a compatibilità cù altre ligami ELF, se l'opzione R hè seguita da un nome di u dirittule , in casu d'un nome di scrittore, hè trattu com'è l'opción -rpath .

-rpath-link DIR

Quandu utilizate ELF o SunOS, una libreria cumanda pò esse da un altru. Questa hè chì questu chì un "ld -shared" link include una libreria cumuni cum'è unu di l'articuli dati.

Quandu u vintador trova una dependenza di modu cusì à fà un link non-shared, non-relocatable, pruverà automaticamente di localizza a biblioteca culligata necessaria è includitu in u ligame, se ùn si hè micca inclusu espliċitamente. In questu casu, l' opzione ligature-ligame specifica u primu settore di i cartulari per circà a ricerca. L' opzione ligature-ligame ùn ponu indicà una sequenza di nomi di scrittori chjamate cù a lista di nomi separati da i culoni o per parechje volte.

Questa opzione deve esse usata da cun prudenza perchè annullà u percorsu di ricerca chì pò esse compilatu in una libreria cumuni. In questu casu hè possibbi utilizatu cunzunzialmente una strada di ricerca distintiva da u liggeru à u runtime.

U ligami utilizza i seguenti stati di ricerca per localizza a bibbiutte cumuni dumandati.

1.

Ogni diretturi spicciati da l' opere di rrpath-link .

2.

Ogni diretturi spicciati da l' opere di rrpad . A diffarenza entre -rpath è -rpath-link hè chì i direttori definite per l' opzioni- rpath sò stati cumpresu in l'eseguitu è ​​usatu in runtime, mentre chì l' opzione di -rpath-link hè solu efficace à u ligame. Hè per u vince nativu solu.

3.

In un sistema ELF, se l' aiuta -rpath è "rpath-link" ùn anu micca usatu, cercate u cuntenutu di l'embiu di l'ambiente "LD_RUN_PATH". Hè per u vince nativu solu.

4.

In SunOS, se l'opzione -rpath ùn hè micca usata, cercate alcune direttori spicciati cù l'opzioni L.

5.

Per un liggeru nativu, u cuntenutu di l'ambienti variable "LD_LIBRARY_PATH".

6.

Per un linker ELF nativu, i direttori in "DT_RUNPATH" o "DT_RPATH" di una libreria cumuni sò cercati per bibliotechei cumuni da necessità. L'intrattenuti "DT_RPATH" sò ignorati se scriveranu "DT_RUNPATH".

7.

I direttori predeterminati, normi / lib è / usr / lib .

8.

Per un liggeru nativu in un sistema ELF, se u schedariu /etc/ld.so.conf esiste, a lista di cartulari truvate in quellu schedariu.

Se ùn si trova micca a libreria cumunicata necessaria, u vincheru accetta una avveda è cuntinua cù a ligame.

-share

-Bible

Crià una biblioteca cumunita. Questa hè attualmente soporta sopra i plataforme ELF, XCOFF e SunOS. In SunOS, u vintador creaturà automaticamente una libreria cumuni si l'opzione ùn hè micca usata è ci sò sìmbuli indefiniti in u ligame.

- arrassu cumuni

Questa opcione dici a Ld à scuzzulate i simboli cumuni cù qualità quand'ellu si mette in i trazioni di pruduzzioni adattati. Prima vene tutti i simbuli di un byte, da tutti i dui bytes, da quì tutti i quatru byte, è allora tuttu. Questu hè per prevene i sparte entre i simboli per i limitazioni d'allughjamentu.

--split-by-file [ size ]

Simile à --split-by-reloc ma crea una nova sección di u risorsu per ogni architettu di l'accumpagnamentu quandu u largu hè ghjunta. statura predeterminada in una talla di 1 s'ellu ùn devi micca.

--split-by-reloc [ count ]

Tesi di creà traczii extra in u schedariu di u risorsu in modu chì nisuna sección di u risultatu di u vostru articulu ùn cuntene più di relocazione contru . Questu hè utile when generating enormous files relocatable per a descarga in certu kernel in tempu reale cù u formatu di còmpiu di u còmpu COFF; datu chì COFFcannot representanu più di 65535 rilucazione in una sola sección. Innota chì questu ùn mancanu di travaglià cù formats di u cuntattu d'ughjettu chì ùn sustene micca i sezzioni arbitrarie. U liggeru ùn hà micca diviziatu settitali indiviu di a ricerca per a ridistribuzione, perchè se una sola artighjanata cuntene cuntenenu più di relazione di relazione una sección di viaghju cuntene quandu parechji rilucazione. cuntene i predeterminate per un valore di 32768.

--stats

Compute è visualizà e statìstichi nantu à l'operazione di u linker, cum'è u tempu d'esecutesi è l'usu di memoria.

- format tradizionale

Per qualchi mira, a pruduzzioni di ld hè diversa in certi modi da a pruduzzioni di qualchì liggeru esistenti. Questa chjama l' ordine per aduprà u tradiziunale inveci.

Per esempiu, nantu à SunOS, ld combina l'entrée duulete in u simbulu di corda di simbulu. Chistu pò dà a diminuità di un schedariu di u risorsu cù l'infurmazioni di debugging entene da più di 30 percent. Per disgrazia, u prugramma di SunOS "dbx" ùn pò micca leghjite u prugrammu risultatu ("gdb" ùn hè micca problema). U cambiamentu di cunnessione tradiziunale hà dettu ld à ùn combine l'entrate duoppule.

--section-start sectionname = org

Locate una retazione in u schedariu di uputtu à l'indirizzu assolutu dati da org . Pudete puru aduprà sta alchimazione quantu parechje cusì necessariu per circà multiplici seculi in a linea di cummanda. org debe devi esse un inzcu unoru hexadecimale; per a compatibilità cù altre ligami, pudete scaphandre a principale di 0x sò generalmente associate cù valuri hexadecimali. Nota: ùn devi esse micca un spaziu biancu trà secunna , u signu ugguali (`` = ''), è org .

-Tbss org

-Tdata org

-Ttext org

Utilizate org cù l'indirizzu iniziale per --- nant'à u "bss", "data", o u segmentu di "testu" di u schedariu di uputtu. org debe devi esse un inzcu unoru hexadecimale; per a compatibilità cù altre ligami, pudete scaphandre a principale di 0x sò generalmente associate cù valuri hexadecimali.

--dll-verbose

--verbose

Indicate u numeru di versione per a ld è lista l'emulazioni di ligami supportati. Quì l'accessorii di l'ingaghjate pò, è ùn pò micca esse apertu. Visualizza l'script scriptu chì hè utilizatu da u vintador.

--version-script = version-scriptfile

Specifique u nome di un script scriptu à u vinle. Questu veni usatu in usu di creazione bibliotefichi cumuni per spicificà infurmazioni addulurati di a versione heirarchia per a biblioteca chì hè creata. Questa opzione hè solu ghjinirosa di e plataformi l'ELF chì sustenemu librarii cumuni.

--warn-common

Avvisu chì un simbulu cumuni è cumminatu cù un altru simbulu cumuni o cun una difinizzione di simbulu. Unziunarii Unix permettenu stu pruvene un pocu sloppy, ma i liggeri in certi sistemi operatichi ùn sò micca. Questa opzione vi permette di truvà u prublema di i prublemi da l'aghjustà i simboli globale. Sfortunatamente, alcuni librarii C utilizanu issa pratica, perchè pò avè qualchì avise nantu à i simboli nantu à e biblioteche è ancu in i vostri prugrammi.

Ci sò trè tipuli di simboli globale, illustrati quì da C esempi:

int i = 1;

A difinizzioni, chì vene in a sizzioni di dati iniziali di u schedariu di u risorsu.

extern int i;

Una referenza indefinita, chì ùn ùn micca attribuisce l'espai. Ci hè una predefinita o un simbulu cumuni per a variàbile.

int i;

Un simbulu cumuni Sì ci sò solu (unu o più) simbuli cumuni per una variable, si va in l'area di data nalizzistata di u schedariu di uputatu. U ligger fusiona multiple simbuli cumuni per a stissa variabile in un simbulu unicu. Sì si sò di tene diversi, sceglie u grandore più grande. U ligne converti un simbulu cumuni in una dichjarazione, se ci hè una difinizzioni di a stissa variabile.

L' opere cumunione generale pò pruduce cinque tipi di avisi. Ogni annunziu hè custituitu di un paru di linii: u primu si descrigga u simbulu ghjuntu suldatu, è u secondu discende u sìmbulu previ in ​​scuntru cù u listessu nome. Un o dui di i dui simbuli seranu un simbulu cumuni.

1.

Dopu un simbulu cumuni in una riferenza, perchè ci hè digià una difinizione per u simbulu.

(): avete: cumuni di «" annullatu da a definizione (): avete: definitu quì

2.

Dopu un simbulu cumuni in una riferimentu, perchè una scopu di u sìmbulu hà scontru. Questu hè listessu chì u casu previ, solu chì i simboli sò scontru in un altru ordre.

(): avvirtimentu: definizzione di « 'precedente (): avete: cumuni hè quì

3.

Fusione un simbulu cumuni cun un simbulu cumuni cumuni cumunni stessi.

(): avete: cumuni cumuni di « ' (): avete: cumuni cumuni sò quì

4.

Fusione un simbulu cumuni cun un simbulu cumuni più grande di precedente.

(): avete: cumunu di «» annullatu da un usu cumuni (): avete: cumuni più cumuni hè quì

5.

Fusione un simbulu cumuni cun un simbulu cumuni cumuni più frequenti. Questu hè listessu chì u casu previ, solu chì i simboli sò scontru in un altru ordre.

(): avete: cumunu di «simbulu» «annullamentu più chjucu cumuni (): avete: cume cumuni è quì

--warn-constructors

Avete à qualunque uttene custrutturi globale sò usati. Questu hè solu utili per un qualchì schedariu di schedari d'oggettu. Per formate cum'è COFF o ELF, u linker ùn pò micca detectar l 'usu di i constructuri globale.

--warn-multiple-gp

Avete chì parechji valuri di puntero global sò esse dumandati in u schedariu di u risorsu . Questa solu hè significativa per certi processuri, cum'è l'Alfa. Specificamenti, certi processuri mettevanu constanti di granni valuri in una sezione speziale. Un registru especial (u puntero global) apunia in a fine di sta seccione, perchè e custanti pò esse carricati efficafiamente via un modu di indirizzu relative relative-register. Siccomu l'offset à u modu relative relative-register hè fissatu è pocu chjuchile (per esempiu, 16 bits), questu limiti a grandura massima di u gruppu constantu. Cusì, in grandi prugrammi, hè spessu necessariu di utilizà valutate multiplici global per esempiu di indirizzà tutte e custanti pussibuli. Questa opcione prupone un avverimentu per esse emessu sempre chì questu casu si trova.

--warn-once

Solo averebbe un avellu per ogni simbulu indefinitu, in casu di una volta per mòdulu chì si fa riferenu à questu.

--warn-section-align

Avete chì l'indirizzu di una sezione di risorsa hè cambiatu per l'alineamentu. Di genere, l'alenamentu hè stata definitu da una sezione in azione. L'indirizzu solu serà mudificatu se ùn esse micca esse explicitatu; hè quella, se l'ordine "SECTIONS" ùn specifiche micca indirizzu di iniziu per a sezione.

- archiviarii

Per ogni archiviu annunziatu nantu à a linea di cumanda dopu l' opzione archiviu à tutte l'archive , include ogni oggettu di u schedariu in l'archiviu in u ligame, in quantu chì cercanu à l'archiviu per l'archivi d'ughjettu esigenti. Questu hè normalment usatu per fà un archiviu file in una libreria compartita, furzendu ogni oggettu per esse include in a libreria cumuni risultati. Questa opzione pò esse usata più di una volta.

Dui noti quandu sanu una questa opzione da gcc: Prima, u gcc ùn sanu micca di questa opzione, perchè avete aduprà -Wl, -whole-archive . Siconda, ùn abbia micca di utilizà -Wl, -no-whole-archive dopu a vostra lista di l'archivi, perchè GCC aghjunghjà a so propria lista di l'archivi à u vostru ligame è ùn voi micca vugliatu questa bandiera per affettà quelli chì sò.

- simbulu

Aduprà una funzione di stampati per u simbulu . Qualchese réfirmation indefinit à u simbulu serà risolta per "__ wrap_symbol". Qualchese réfirmation indefinitu à "__real_symbol" serà reseutu à u simbulu .

Questu pò esse usatu per furnisce una buttera per una funzione di u sistema. A funzione di u frapper deve esse chjamata "__wrap_symbol". Se vulete chjamà a funzione di u sistema, deve chjamà "__ real_symbol".

Eccu un esempiu triviale:

void * __wrap_malloc (int c) {printf ("malloc chjamatu cù% ld \ n", c); ritornu __real_malloc (c); }

Se ligate u codice altre cù questu archiviu cù u mudellu , allora tutti i chjassi à "malloc" si invucarà a funzione "__wrap_malloc" invece. U chjamu "__real_malloc" in "__wrap_malloc" se invoca a funzione "malloca".

Pudete vulete furnisce una funzione "__real_malloc", per quessa, i ligami senza l'opere di quelle anu successu. Se fate questu, ùn deve micca dettu a definizione di "__ real_malloc" in u listessu schedariu cum'è "__wrap_malloc"; sè stessu, l'assembleru pudete resuverà a chjamata prima chì u linker hà l'uppurtunità di trasfurmà à a "malloc".

--enable-new-dtags

--disable-new-dtags

Questu linker pò creà e novi taggi dinamici in ELF. Ma l'anziani sistemi ELF ùn pudendu micca capì. Se specifica --enable-new-dtags , i tagghi dinamichi seranu creati cumu toccu. Se specifice --disable-new-dtags , micca creazione di novi taggi dinamichi. Per automaticamente, i novi tagiti dinamichi ùn sò micca creati. Avete chì ei opcions sò solu dispunibili per i sistemi SPAGNI.

U linker i386 PE accòstenu l'opzione cunfusata , chì pruvucarà à a risata per esse una biblioteca libera dinamica (DLL) invece di un eseguitu nurmale. Avete da nomu l'output "* .dll" quandu usu di sta scelta. Inoltre, u linker soporta u sustegnu di i mudelli standard di "* .def", chì pò esse spjegati nantu à a linea di cumanda d'invellatore cum'è un schedariu d'oggettu (in fattu, avè preceditu l'archivi chì exporta i simboli da, per assicurà chì si sianu ligati, cum'è un schedariu di u persunale).

In più di l'opcions cumuni à tutti i miriali, u liggeru i386 PE accumpere l'opere di a linea di cumanda addizzjonali chì sò specifiche à u destinu PE 3838. Opzioni chì adopranu i valori sò stati siparati da i so valori da u spaziu o un signu ugguali.

--add-stdcall-alias

In casu daveru, i simboli cù un suffissu stdcall (@ nn ) seranu esse cummerciati è ancu cù u suffissu striatu.

- file-file-time

Utilizate u schedariu cum'è u nome di un schedariu in u quale per salvà l'indirizzi base di tutti i rilucazione necessarisi per generazioni di dati cù dlltool .

--dll

Crea un DLL in uce di un esete in fine. Pudete ancu avè utilizzatu -particularità o specifichi una "LIBRARY" in un schedariu di ".def".

--enable-stdcall-fixup

--disable-stdcall-fixup

Se u ligame trova un simbulu chì ùn pò micca esse risoltu, pruvate da fà "ligame fuzzy" per circà un altru sìmbulu difinitu chì difiere solu in u formatu di u simbulu (cdecl vs. stdcall) è risolve u simbulu liggeru à u partitu. Per esempiu, u sìmbulu undefined "_foo" puderia esse ligatu cù a funzione "_foo @ 12", o u simbulu indefinitu "_bar @ 16" puderia esse ligatu à a funzione "_bar". Quandu u linker fa questa, impinia una alerta, perchè ùn deverà esse in modu micca ligatu, ma di qualchì impurtà importarie bibliugrafia generate da i dlls di tercera averebbe bisognu di sta funzione per esse utilizable. Se specifica --enable-stdcall-fixup , questa funzione hè tutali cumpletu è l'avviendu ùn sò stampati. Se specifica --disable-stdcall-fixup , questa funzione hè disabilitata è esse dichjarazioni ùn sò cunsiderate erate.

- Esportu tutti i simboli

Sè datu, tutti i simboli globuli in l'ughjettu utilizatu per edità un DLL seranu spurtatu da u DLL. Nota chì questu hè u predefinitu se altri ùn avete micca esse micca simboli exportati. Quandu i simboli sò esporatamente esse direttamente via i mudelli DEF o exportatu implícitamente cù l'attributi di funzione, u pianu predeterminatu ùn hè micca esse exportatu nudda cosa, salvu micca sta opción. Innota chì i simboli "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", è "impure_ptr" micca esse automaticamente. Inoltre, i simboli importati da altre DLL ùn saranu micca riesciati, è micca chì i simboli specifichianu u schema interna di u DLL cum'è quelli chì cumincianu da "_head_" o finisci cù "_iname". Inoltre, nisun sìmbulu da "libgcc", "libstd ++", "libmingw32", o "crtX.o" seranu spurtati. I simbuli li so nomi cummincianu cù "__rtti_" o "__builtin_" ùn sò micca esse esse uportatu, per aiutà cù C ++ DLL. Finalmente, ci hè una lista larga di simboli cuntrollii privati ​​chì ùn sò micca esse cumposti (ovviamente, questu hè applicatu quandu custruisce DLL pè cgwin targets).

Queste cilio-escludisci sò: "_cintia_dll_entry @ 12", "_citoria_crt0_common @ 8", "_citini_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3 ", è" environ ".

- scrive-simboli , simbulu , ...

Specifique una lista di simboli chì ùn deve esse micca esse in autumàticu. I nomi di simbulu pò esse delimitati per vìasi o colonizati.

- libere micca libs lib , lib , ...

Especifica una lista di librerii archivi chì i simboli ùn deve micca esse in autumàticu. U librettu di i nomi pò esse delimitatu da quelli persunali o colons. Specifying "--exclude-libs ALL" ùn escludiu i simboli in tutte l'libreria di archiviu da esporà automatica. I simbolii esse cagiunati nant'à un.

- filiera di filiera

Specifique l'alincà archiviu. Seczioni in u schedariu principianu sempre à l'offsets d'archivi chì sò multiplici di questu numaru. Questa standard hè di 512.

- riserva naturale

- riserva di scatula , cumpete

Specifique la cantità di memoria per riservà (è in modu opcionalmente) per esse usatu cum'è u mondu pè stu prugramma. U predefinitu hè 1Mb riservatu, 4K hà fattu.

--value valurimagine

U valore d' utilizazione cum'è l'indirizzu di basa di u vostru programma o dll. Questu hè u locu di memoria più insignante chì serà usatu quandu u vostru prugrammu o dll hè carricu. Per riduce a necessità di migliurà è di migliurà u sviluppu di i vostri dlls, ognunu anu avè un indirizzu di basa unicu è ùn ne cumulerà nessun dlls. U predefinitu hè 0x400000 per esse executables, è 0x10000000 per dlls.

--chill-at

Sè dati, i suffissi stdcall (@ nn ) seranu rimbionu da i simboli prima ch'elli anu migliatu.

- prima-image-versione valore

Fate u numeru maistru di a "versione di impresa". Defaults à 1.

--major-os-versione valore

Fate u numeru principalu di a versione `` os »'. Defaults à 4.

--major-subsistema- valur di versione

Fate u numeru maistru di a "versione di subsistema". Defaults à 4.

--minor-image-versione valore

Fate u numeru menzu di a "versione di impresa". Defaults à 0.

--minor-os-versione valore

Fate u numeru menzu di a versione `` os ''. Defaults à 0.

--minor-sottoresistema- valore valore

Fate u numeru menu di a "versione di subsistema". Defaults à 0.

--putput-def file

U liggeru creà u schedariu di schedariu chì cuntene un archiviu DEF chjusu à a DLL chì u liggeru hè generatu. Stu schedariu DEF (chì deve esse chjamatu "* .def") pò esse usatu per creà una biblioteca di impurtazione cù "dlltool" o pò esse usatu cum'è referenza di simboli automaticamente o implicitamenti esportati.

--out-implib file

U liggeru creà u schedariu di schedariu chì cuntene un lib importe chì currisponde à a DLL chì u liggeru hè generatu. Questa lib importazione (chì deve esse chjamata "* .dll.a" o "* .a" pò esse usata per ligà clienti contra u DLL generatu; questu cumprimentu fa possible saltà un passatu di creazione di bibliutte d'importazione "dlltool" separata.

--enable-auto-image-base

Scelta di automaticamente a basa di l'imagine per DLL, salvu chì unu hè specificatu utilizendu l'argument "--image-base". Utilizendu un hash generatu da u dumicinu à creà basa di l'imagine unica per ogni DLL, in colisazioni in memoria è di rilucazione chì pò esse ritruvà l'eseguzione programe sò evitati.

--disable-auto-image-base

Ùn ùn generate micca automaticamente una basa di l'imagine unica. Se ùn ci hè micca una basa di l'imàcu ("--imagen-base"), utilizate l'offerta default.

- string di prefettura di --dll-search-prefix

Quandu ligà dinamica in un dll senza una libreria di impurtazione, cercate " .dll" in preferenza à "lib .dll". Sta cumpurtamentu permette a distinazione facilità entre DLLs custruiti per e diversità di e `` subplatforms '': nativu, cygwin, uwin, pw, etc. Per esempiu, dg cygwin tipifichemu usu "--dll-search-prefix = cyg".

--enable-auto-import

Fate a rillazione sofistica di "_simbru" à "__imp__symbol" per l'importazioni di DATA da DLL è creanu i simboli necessarie necessariu per a custruzzione di i bibliutte di impurtazione cù l'Esporta DATA. Questu solu averebbe "solu travagliu" --- ma à qualchì volta pudete vede stu messagiu:

"variable" 'ùn pò micca esse impurtatu. Sceglite puru a ducumentazione per ld "--enable-auto-import" per i dettagli. "

U missagiu hè quellu chì quandu qualchì (sub) espressione accede à una indirizzu ultimamente datu da a summa di duie constante (Win32 timperti d'impurtazione solu permettenu unu). E posti induve chistu pò esse accede à l'accessi à i campi di i membri di e struttura impurtate d'una DLL, aduprendu aduprate un indrintu constantu in un varie variatori impurtatu da un DLL. Qualce variabilité multiword (arrays, structs, longu longu, ecc) pò pruvà sta cundizione d'errore. In ogni modu, inveci di u tipu di dati exactu di a varià esportata infatti, ld sempre detaremu, averebbe u avvirtimentu, è surtite.

Ci hè parechje manere di indirizzà sta difficultà, inveci di u tipu di dati di a variata exportata:

Un modu hè di utilizà --enable-runtime-pseudo-reloc switch. Questu quella a funzione d'ajustà e referenze in u vostru cliente u codice per u circondu per l'ume runtime, perchè stu mètudu ùn hè sanu solu quandu u circondumente in u persunale runtime soporta stu funzione.

A siconda solu hè di furzà una di e 'constanti' per esse una variable --- chì hè, ignuratu è un ottimisore in tempu di compilazione. Per arrays, ci sò duie pussibulità: a) facenu l'indxee (l'indirizzu di l'array) una variàbbilita, o b) facenu à l'indexu "constante" una variàbile. Cusì:

extern type extern_array []; extern_array [1] -> {volatile type * t = external_array; t [1]}

o

extern type extern_array []; extern_array [1] -> {volatile int t = 1; extern_array [t]}

Per structs (è a maiò parte di l'altri tipe di multilingua), l'unica opzione hè di fà a struttura propria (o a longa longa, o a ...) variable:

external struct s extern_struct; extern_struct.field -> {volatile struct s * t = & extern_struct; t-> field}

o

extern long long extern_ll; extern_ll -> {volatile long long * local_ll = & extern_ll; * local_ll}

Un terzu mètode di tratta di sta diffiulazione hè di abbandunà 'impurtazione auto-impiegata' per u simbulu infatente è marcallu cù "__declspec (dllimport)". In ogni casu, in a prublema chì esige esempiu compile-time #defines per indicà ch'ellu sia di custruisce un DLL, custituì u cliente di u cliente chì ligame cù a DLL, o meramente a custruzzione / ligame à una libreria statica. Per fà l'scelta entre i diversi metudi di risolve u duminiu "indirizzu direttu cù prughjettu cuntensementu cumpensu", deverete tandu cunsiderà l'usanza tipicu di u mondu:

Original:

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

Solu 1:

--foo.h extern int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {/ * Questa solu solu hè per win32 è cygwin; ùn "micca ottimisimu" * / volatile int * parr = arr; printf ("% d \ n", parr [1]); }

Solu 2:

--foo.h / * Nota: l'auto-exporte hè presumitu (no __declspec (dllexport)) * / #if (definitu (_WIN32) || definite (__ CYGWIN__)) && \! (definitu (FOO_BUILD_DLL) || definite (FOO_STATIC ) #) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Una quarta manera di evitari stu prublema hè di re-codice a vostra libreria per utilizà una interfaccia in funziunale in quantui d'una interfanta di dati per i variatori offending (per esempiu, set_foo () e get_foo () funzioni accessor).

--disable-auto-import

Ùn pruvate micca fà affacciate di u "sìmbulu" à "__imp__symbol" per DATAimports da DLL.

--enable-runtime-pseudo-reloc

Se u vostru còdianu cuntene esprissioni scritte in a secunione --enable-auto-import, chì hè, DATAimports da DLL cù non-zero offset, u cambiante cresce un vectores di "pseudo relocations runtime" chì pò esse usatu da l'intreduce di u perspettiva per rinfurzà referenze a tali datu in u vostru cliente.

--disable-runtime-pseudo-reloc

Ùn cose micca pseudo relocations per non-zero offset Importazioni di DATA da DLL. Questu hè u predefinitu.

--enable-extra-pe-debug

Amurizà infurmazioni nantu à l'impurtanza auto-impurtazione simbuli.

- asseczione-allinamentu

Sets l'alincà di a secunna. Sezione in a memoria sò sempre cumincià à l'indirizzi chì sò un multiple di questu numaru. Defaults à 0x1000.

- stack reserve

- stack reserve , commit

Specifique la cantità di memoria per riservà (è in modu di cuncepimentu opcionalmente) per esse usatu cum'è stack per stu prugramma. U predefinitu hè 2Mb riservatu, 4K hà fattu.

--subsistema chì

--subsistema chì : principal

--subsistema chì : principal . minor

Specifique el subsistema sottu chì u vostru prugramma eseguisce. I valori juridichi chì sò "nativu", "finestu", "consu" è "posis". Pudete aghjustà a versione di sottusistema ancu questu.

Impurtante: Utilizà l'ordine di u manu ( % man ) per vede cumu u cumandimu hè usatu in u vostru urdinatore particulari.