Linux / Unix Kommando: Id

NUMM

ld - Mat LD benotzt den GNU Linker

SYNOPSIS

ld [ Optiounen ] objfile ...

DESCRIPTION

ld kombinéiert eng Rei vun Objet an Archivdateien, verännert seng Daten an verbitt d'Symbol Referenzen. Normalerweis ass de läschte Schrëtt an der Kompiléierung vun engem Programm ld .

ld akzeptéiert Linker Command Language Dateien, déi an enger Superset vun der Link Edit Editor Command Language Syntax geschriwwe ginn, fir explizit an total Kontrolle iwwer den Linking Prozess ze kréien.

Dës Säit vum Mann beschreift d'Sproochbezeechnung net; ld Eintritt bei "info", oder d'Handbuch ld: den GNU Linker, fir komplett Detailer iwwert d'Commandesprooch an aner Aspekter vum GNU Linker.

Dës Versioun vum ld benotzt d'allgemenge Zweck BFD Bibliotheken fir op Objektdateuren ze fonctionnéieren. Dëst léisst et ld Liese, kombinéieren an schreiwen Objektdateien an ville verschiddene Formater --- zum Beispill, COFF oder "a.out". Verschidde Formate kënne matenee verbonne ginn, fir all verfügbare Zort Objeten Datei ze produzéieren.

Niewent senger Flexibilitéit ass de GNU Linker méi hëllefräich wéi aner Linker bei der Diagnostik. Vill Linker hunn d'Exekutioun direkt beim Erreechung vu Feeler verlassen; Wann et méiglech ass, fuerdert weider Ausféierung, sou datt Dir aner Fehler erkennen (oder, a ville Fäll, eng Ausgabdatei trotz dem Fehler kréien).

Den GNU Linker ld ass fir eng breet Palette vu Situatiounen ze decken an sou kompatibel wéi méiglech mat anere Linker ze sinn. Als Resultat, Dir hutt vill Choixer fir säi Verhalen ze kontrolléieren.

OPTIONS

De Linker ënnerstëtzt eng Rei vu Kommandozeechen , awer an der praktescher Praxis gëtt e puer vun hinnen an engem bestëmmten Kontext benotzt. Zum Beispill ass eng häufig Benotzung vu ld fir Standard Unix Objektdateien op engem Standard, ënnerstëtzt Unix-System ze verbannen . Op sou engem System gëtt eng Datei "Hallo.o" verlinkt:

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

Dëst erzielt ld fir eng Datei namens Ausgab als Resultat ze verknëppelen vun der Datei "/lib/crt0.o" mat "hello.o" an der Bibliothéik "libc.a", déi aus de Standard Search Verëffentlechen kommen. (Kuckt d'Diskussioun vun der -l Option ënner.)

E puer vun de Kommando-Linn op Méiglechkeeten op ld kann op irgend engem Punkt an der Kommandozeil spezifizéiert ginn. Allerdéngs, Optiounen, déi op Dateien, wéi zum Beispill -l oder -T, bezuelen , verlaangen d'Datei op de Punkt wou d'Optioun an der Kommandozeil uewen an d'Objektdateuren an aner Dateieoptiounen opgefouert gëtt. Wiederholen vun net-Dateieoptiounen mat engem anere Argument ginn entweder keng weider Effekter ofgëtt oder de Virdeeler (déi weider bis lénks op der Kommandozeilung) vun dëser Optioun iwwerschratt ginn. Optiounen, déi méi wéi eemol fréier sënnvoll spezifizéiert sinn, ginn an de Beschreiwunge méi nogewisen.

Net-Optiounsargumenter sinn Objete Dateien oder Archiver déi zesumme matenee verbonne sinn. Si kënne Verfollegen, Virdeeler, oder mat Kommandozeechen opgefouert ginn, ausser datt e Argument vun Objekttitel nët tëschent enger Optioun an hirem Argument steet.

Normalerweis gëtt de Linker mat mindestens e Objektsdatei opgefuerdert, awer Dir kënnt aner Forme vu binärer Inputdatei anhand vun -l , -R an der Skriptbefuersentioun spezifizéieren. Wa keng Binär-Input-Dateien op all spezifizéiert sinn, gëtt de Linker keng Ausgab ausgehaalen a gëtt d'Meldung keng input Dateien .

Wann de Linker net d'Format vun enger Objektdatei erkennen, da gëtt et un e Linker-Skript. E Skript, deen op dës Manéier spezifizéiert gëtt, verdeelt den Haaptlot script, deen fir de Link benotzt gëtt (entweder den Standard Linker-Skript oder deen deen benotzt gëtt mat -T ). Dës Fonktioun erlaabt de Linker géint eng Datei ze verknëppelen, déi e Objet oder Archiv ass, awer tatsächlech definéiert e puer Symbol Wäerter, oder benotzt "INPUT" oder "GROUP" fir aner Objeten ze laden. Bedenkt datt dee Skript sou dës Manéier nëmmen de Main Linker Skript ubelaangt; Benotzt d'Option -T fir de Standard Linker Skript ganz komplett ze ersetzen.

Fir Optiounen, deenen hir Nimm sinn e puer Bréife, Optiounsargumenter mussen entweder den optionalen Bréif maachen, ouni intervenéiere Leerzeichen, oder als separat Argumenter direkt direkt op d'Optioun ginn, déi se brauchen.

Fir Optiounen, wou Nimm sinn e puer Bréiwer, entweder e Strich oder zwee kënnen den Optriede name virbereeden. zum Beispill -Spigel-Symbol an - Sproch-Symbol sinn equivalent. Bemierkung - et gëtt eng Ausnahm op dës Regel. Verschidde Bréiweroptiounen, déi mat engem méi nidderleche Fall beginnt, kënnen nëmmen zwee Printen virginn. Dëst ass d'Verréckung mat der -o Option ze reduzéieren. Also zum Beispill -omagic stellt den Ausgabdatei Numm fir Magie, während --omagic stellt d'NMAGIC-Mark op der Ausgab.

Argumenter op Multiple-Letters-Optiounen musse entweder vun engem Optriede vun der Optiounsziel ofgeschloss ginn oder als separat Argumenter direkt direkt op d'Optioun ginn, déi se brauchen. Zum Beispill, --trace-symbol foo an --trace-symbol = foo si gläichwäerteg. Eindeutesch Ofkierzungen vun den Nummere vu Multiple-Letter-Optiounen ginn ugeholl.

Notéieren - wann de Linker indirekt opgeruff gëtt, iwwer e Compiler-Treiber (z. B. gcc ) dann all d'Linker Command Line Optiounen unzefänken mat -Wl, (oder wat fir den jeweilegen CompilerTreiber entspriechend) entsprécht:

gcc -Wl, - Startgrupp foo.o bar.o -Wl, - Endgroup

Dëst ass wichteg, well soss kann d'Compiler-Treiberprogramm d'Linker-Optioune stierwen ënnerhuelen, wat e schlecht Link ass.

Hei ass eng Tabelle vun den generesche Kommandozeilschalter déi vum GNU Linker akzeptéiert hunn:

-a Schlësselwuert

Dës Optioun gëtt ënnerstëtzt fir HP / UX Kompatibilitéit. De Schlësselwuert Argument muss ee vun de Stéckarchiv , Gedeelt oder Standard ginn . -Aarchiv ass funktionell äquivalent mam Bstatic , an déi aner zwee Schlësselwieder funktionneleg äquivalent zu -Bynamik . Dës Optioun kann all puer Zuelen benotzt ginn.

- Eng Architektur

--architektur = Architektur

An der aktueller Verëffentlechung vu ld ass dës Optioun nëmme nëtzlech fir d'Intel 960 vun Architekturen. An dëser ld Konfiguratioun weist d' Architekturark Argument d'spezifesch Architektur an der 960er Famill z'integréieren, déi e puer Garagen a Modifikatioun vum Archivbicher Sichbunn ze änneren.

Zukünfteg Releases vu ld kënnen ähnlech Funktionalitéit fir aner Architekturfamillitéiten ënnerstëtzen.

-b Input-Format

--format = Input-Format

ld ka configuréiert ginn fir méi wéi eng Zort Objetsdatei ze ënnerstëtzen. Wann Äre Ld dës Säit konfiguréiert ass, kënnt Dir d'Option -b benotze fir de Binärformat fir Input Objete Dateien opzemaachen, déi dës Säit op der Kommandozeil suivéieren. Och wann ld konfiguréiert ass fir alternativ Objektformaten z'ënnerstëtzen, brauchs de normalerweis net dat ze spezifizéieren, well ld sollt configuréiert ginn als Standardformulatiounsformat de meeschten gewéinleche Format op all Maschinn. Input-Format ass e Text String, den Numm vun engem speziellen Format deen vun de BFD Bibliothéiken ënnerstëtzt gëtt. (Dir kënnt d'verfügbar Bänkformater mat objdump -i lizeren .)

Dir wëllt dës Optioun benotzen wann Dir Dateien mat engem ongewéinleche binäre Format verknüpft. Dir kënnt och benotzt -b fir Formate explizit z'änneren (wann Dir Objeten Dateien mat verschiddene Formen verbindet), andeems Dir e b- Input-Format fir all Grupp vun Objektdateien an engem bestëmmte Format enthält.

De Standardformat gëtt aus der Ëmännerbar Variant "GNUTARGET" geholl.

Dir kënnt och den Input-Format vun engem Skript definéieren, andeems Dir de Kommando "TARGET" benotzt;

-c MRI-commandfile

--mri-script = MRI-commandfile

Fir Kompatibilitéit mat Linker déi vu MRI produzéiert goufen akzeptéiert Skriptdateien an enger alternativer begrenzter Kommando Sprooch geschriwen, déi am MRI Kompatibel Skript Files vun der GNU ld Dokumentatioun beschriwwe ginn. MRI Skript Dateien eroflueden mat der Option -c ; Benotzt d'Option -T fir d'Linker-Skripte lafen an der Allzweck ld Scriptingstrooss ze schreiwen. Wann d' MRI-cmdfile net existéiert, kuckt se no an de Verzeichnisser vun all -L- Optiounen.

-d

-dc

-dp

Dës dräi Optiounen si gläichwäerteg; Verschidde Formen ginn fir Kompatibel mat anere Linker ënnerstëtzt. Si weisen Plaz mat gemeinsamen Symboler ze weisen, och wann eng verlinkteabel Ausgabdatei spezifizéiert gëtt (mat -r ). De Skriptbefehl "FORCE_COMMON_ALLOCATION" huet déi selwecht Effekt.

-e entry

--entry = Eintritt

Benotzt d' Säit als explizit Symbol fir d'Ausféierung vun Ärem Programm, anstatt den Default-Punkt. Wann et keen Symbol gëtt, deen den Eegent fonnt gëtt , probéiert de Link ze verspriechen sech als Eenzel unzeleeën, a benotze dat als Eintrittsadress (d'Nummer gëtt an der Basis 10 interpretéiert; Dir kënnt e geleefegen 0x fir Base 16 oder e Lead 0 benotzen fir Base 8).

-E

--export dynamesch

Beim Erstelle vun engem dynamesch verknüpften ausführbar sinn all Symboler un déi dynamesch Symbol vun der Symbolik. D'dynamesch Symbol vun der Symbolik ass de Satz vun Symbolen déi vu dynameschen Objeten a laanger Zäit ze gesinn sinn.

Wann Dir dës Optioun net benotzt, kënnt d'dynamesch Symbol symbolesch nëmmen déi Symboler déi mat engem dynameschen Objet am Link referenzéiert sinn.

Wann Dir "dlopen" benotzt fir e dynamesche Objet ze laden, deen op d'Symbolen zeréckschreift, déi vum Programm definéiert sinn, anstatt e puer dynamesche Wierder, da musst Dir dës Optioun wahrscheinlech beim Verknëppung vum Programm selwer benotzen.

Dir kënnt och de Versiounskript benotze fir ze kontrolléieren wat d'Symbolen der dynamescher Symbolentabelle hinzukommen sollen wann de Format vun der Output et ënnerstëtzt. Kuckt d'Beschreiwung vum --version-Skript op @ ref {VERSION}.

-EB

Link Big-Endyen Objeten. Dëst beaflossen d'Standardausgabformat.

-EL

Link klengendianesch Objeten. Dëst beaflossen d'Standardausgabformat.

-f

--auxiliary name

Wann Dir e gemeinsame gemeinsamen Objet schafft, setze de intern DT_AUXILIARY-Feld op de spezifizéierte Numm. Dëst erzielt den dynamesche Linker datt d'Symboltabelle vum gemeinsamen Objet als Hëllefsfilter op der Symboliste vum gemeinsame Objektnumm sinn.

Wann Dir e Link op dësem Filterobjekt ze verknëppt, fënns de dynamesche Linker beim Fuerderungsprogramm d'Feld DT_AUXILIARY. Wann de dynamesche Linker all Symbole vum Filterobjekt opléist, dann zielt ob d'Definitioun am gemeinsame Objektnam. Wann et een ass, gëtt et anstelle vun der Definitioun am Filterobjekt benotzt. De gemeinsamen Objet Numm muss net existéieren. Dofir kann de gemeinsame Objektnumm benotzt ginn fir eng alternativ Implementatioun vu verschiddene Funktiounen ze sichen, vläicht fir Debuggen oder fir Maschinn spezifesch Performance.

Dës Optioun kann méi wéi eemol festgeluegt ginn. D'DT_AUXILIARY Einträgungen ginn an der Rei erstallt, an där se op der Kommandozeeche sinn.

- Numm

--filter Numm

Wann Dir e gemeinsame gemeinsamen Objet schafft, setze de intern DT_FILTER Feld op de spezifizéierte Numm. Dëst erzielt den dynamesche Linker datt d'Symboltabelle vum gemeinsamen Objet dat erstallt gi soll als Filter op der Symboliste vum gemeinsame Objektnumm benotzt ginn .

Wann Dir e Link op dësem Filterobjekt ze verknëppt, fënns de dynamesche Linker beim Drockvirgang den DT_FILTER Feld. De dynamesche Linker wäerten Symboler ze wielen wéi déi Symbol-Table vum Filterobjekt wéi gewéinlech, awer et wäert tatsächlech mat den definéierten Definitioune am gemeinsamen Objektnam fannen. Dofir kann de Filterobjekt benotzt ginn fir e Sockel vun de Symbolen aus dem Objetnam ze wielen.

E puer älteren Linker benotzen d'- F- Option während enger Compilatioun Toolkette fir Spezifizéierung vum Objet-Dateiformat fir béid Input- a Output Objektdateien ze spezifizéieren. De GNU Linker benotzt aner Mechanismen fir dësen Zweck: -b , -Format , -Formatoptioune , de Kommando "TARGET" an de Linker-Skripten, an d'Ëmstellung "GNUTARGET". Den GNU Linker ignoréiert d'- F- Option wann net e gemeinsame gemeinsaamt Objet geschafe gëtt.

NummName

Beim Schaffen vun engem ELF-konfiguréierten oder gedeelte Objet, NAME NAME nennen wann de executable oder gedeelte Objet geliwwert gëtt, andeems Dir DT_FINI op d'Adress vun der Funktioun setzen. Par défaut benotzt de Linker "_fini" als Funktioun fir unzeruffen.

-g

Ignoréiert. Gitt zur Kompatibilitéit mat anere Tools.

-G Wert

--gpsize = Wäert

Setzt déi maximal Gréisst vun Objeten optimiséiert mat dem GP-Register op d' Gréisst . Dëst ass nëmme sinn wichteg fir Objektdateiformate wéi MIPS ECOFF, déi Ënnerstëtzung vu grouss a kleng Objeten a verschiddene Sektiounen ënnerstëtzt. Dëst gëtt fir aner Objekterfichierformate ignoréiert.

-h Numm

-soname = Numm

Wann Dir e gemeinsame gemeinsamen Objektiv erstallt, setze de intern DT_SONAME Feld op de spezifizéierte Numm. Wann e Fichier ass mat engem gemeinsamen Objet verknëppelt, deen e Feld DT_SONAME huet, dann wann déi ausführbar Operett lafe kann de dynamesche Linker versicht dat de gemeinsame Objet dat Feld vum DT_SONAME Feld anstatt den Dateinumm gëtt uginn.

-i

Fänke eng inkrementell Link (selwëcht wéi d'option -r ).

- Benotzernumm

Beim Erstelle vun engem Exklusiv oder Eegeschafte vum ELF en Numm ausruffen, NAME Nennt wann de executable oder gedeelte Objet geladen gëtt, andeems d'DT_INIT zu der Adress vun der Funktioun ass. Par défaut gëtt de Linker "_init" als Funktioun fir unzeruffen.

-l Archiv

--Library = Archiv

Fichieren Archiv Archiv Datei op d'Lëscht vu Dateien fir Link ze liesen. Dës Optioun kann all puer Zuelen benotzt ginn. ld wäert seng Path-Lëscht fir opfälleg "libarchive.a" fir all Archivi uginn.

Op Systemer déi verbreet Bibliothéiks ënnerstëtzen, kann luedlech och nach Bibliothéik sichen an extensiounen wéi ".a". Spezifesch Ausféierung op ELF a SunOS Systeme luedert e Verzeichnis fir eng Bibliothéik mat enger Ausdehnung vun ".so", ier Dir no enger Ausdehnung vun ".a" gesucht. Konventioun, eng ".so" Extensioun weist eng gemeinsam Bibliothéik.

De Linker fënnt een Archiv nëmmen eemol, op der Plaz wou et op der Kommandozeechnung ass. Wann de Archiv definéiert e Symbol, deen an engem gewënschten Objet definéiert ass, dat virum Archiver op der Kommandozeilung ass, gëtt de Linker déi passende Datei aus dem Archiv. Allerdéngs gëtt en onbestëmmten Symbol an engem Objekt spéider op der Kommandozeilung net verursaacht datt de Linker d'Erënnerung erëmfënnt.

Kuckt d'- ( Optioun fir e Wee fir de Linker ze dréinen fir d'Archiven méi oft ze sichen.

Dir kënnt d'selwescht Archiv méi laang op der Kommandozeilegung liesen.

Dës Zort vun Archivéierungssuche ass Standard fir Unix Linker. Awer wann Dir ld onAIX benotzt, da musst feststellen datt et ënnerschiddlech vum Verhalen vum AIX Linker ass.

-L Sucher

--Library-Säit = searchdir

Fannt path path an der Lëscht vu Weeër déi ld Sich fir Archivbibliothéiken a Ld Kontrollskripte sichen. Dir kënnt dës Optioun eng Rei Zäiten benotzen. D'Verdeelungen sinn an der Uerdnung nogekuckt, wéi se op der Kommandozeil ze spezifizéieren sinn. Verëffentlter déi op der Kommandozeechnung definéiert ginn sinn no gespaart. All -L- Optiounen gelten fir all -l Optiounen, egal wéi d'Uerdnung, an där d'Optioune sinn.

Wann de Suchdir mat "=" ufänkt, da gëtt d'"=" ersetzt duerch de Sysroot-Präfix , e Wee deen wann de Linker ugestallt gëtt.

Den Standarddefault vu Weeër (ouni ze spezifizéieren mat -L ) hänkt vun der Emulatiounsprozedur ld benotzt, an e puer Fäll och wéi et ugestallt gouf.

D'Punnen kënnen och an engem Linkskript mat dem Kommando "SEARCH_DIR" spezifizéiert ginn. Verëffentleche ginn dës Manéier gesicht an deem Punkt wou de Linker-Skript op der Kommandozeil steet.

-m Emulatioun

Emuléieren den Emulatioun Linker. Dir kënnt d' Verfügbar Eméis mat der --verbose- a -V- Optioune listen .

Wann d'- m- Optioun net benotzt gëtt, gëtt d'Emulatioun aus der Variable "LDEMULATION" geholl, wann dat definéiert ass.

Sinn d'Standardemodul abhängt wéi de Linker ugestallt gouf.

-M

--print-Kaart

Druk op enger Linkkaart op d'Standardausgab. Eng Linkskaart proposéiert Informatioun iwwer de Link, ënnert der folgender Lëscht:

*

Wou Objete Fichieren a Symbolen opgemaach ginn.

*

Wéi gemeinsam Symbole ginn allocéiert.

*

All Archiver Membere sinn am Link, mat enger Erwäermung vum Symbol, deen den Archiver Member enthüllt huet.

-n

--nammesch

Schrecken vun der Ausrichtung vun de Sektiounen aus a markéieren d'Ausgab als "NMAGIC" wann et méiglech ass.

-N

--omagesch

Setzt den Text an d'Datenabschnitte fir liesen a schreiwen ze sinn. Och seet d'Bildsaile net op d'Säit, an d'Verknëppung vu gemeinsame Bibliothéiken auszeschléissen. Wann d'Ausgabformat d'Unix-Stil Zaubernummer ënnerstëtzt, markéiert d'Ausgaang als "OMAGIC".

--no-omagesch

Dës Optioun negéiert déi meeschte vun den Effekter vun der Option -N . Et stellt d'Textebereich nëmmen ausgeliwwert, a zwéngt de Segment vun der Datebank z'informéieren. Notéieren - dës Optioun keng Verknüpfung géint gemeinsam Divisioun. Benotzt -Bdynamic fir dat.

-o- Output

--output = output

Benotzt Ausgab wéi den Numm fir de Programm vu ld ; Wann dës Optioun net spezifizéiert ass, gëtt den Numm a.out vum Standard ugewisen. De Skriptbefehl "AUSSER" kann och den Ausgabdatei name spezifizéieren.

-O Niveau

Wann Niveau e numeresch Wäerter méi wéi null ld den Output optimiséiert. Dëst kéint méi laang daueren an et ass deemno wahrscheinlech nëmmen fir den endgülteg Binär ze aktivéieren.

-q

--emit-relocs

Verletzten Rubriken an Inhalter an voll exklusiv exececutables. Post Link Analyse an Optimisatiouns-Tools kënnen dës Informatioun brauchen, fir korrekt Ännerungen vu Executables ze maachen. Dëst Resultat a méi gréisseren Executables.

Dës Optioun gëtt am Moment nëmmen op ELF Plattformen ënnerstëtzt.

-r

--verreckbar sinn

Generéiere se verlinkteabel Ausgab --- dh, eng Ausgabdatei z'informéieren, déi sech als Input op ld leet . Dëst gëtt heiansdo als Deelnumm verbannt . Als Nebenwierkung, an Ëmfeld déi Standard-Unix Magie-Zuelen ënnerstëtzen, setzt dës Optioun och d'Zaubernummer vum Outputdatei op "OMAGIC". Wann dës Optioun net spezifizéiert ass, gëtt e absolute Fichier erstallt. Wann Linken vu C ++-Programmer verbonne gëtt, gëtt dës Optioun keng Referenzen u Konstruktoren opgeléist; Dir hutt dat benotzt -Ur .

Wann eng Inputdatei net déi selwecht Format wéi d'Ausgabdatei hutt, fënnt d'Deellink nëmmen ënnerstëtzt, wann dës Input- Datei keng Verrécklungen enthält. Verschidde Formate fir Output kënnen méi Restriktiounen hunn; zum Beispill verschidde "a.out" -baséiert Formate ënnerstëtzen net deelweis Verknëppung mat Input- Dateien an aneren Formen.

Dës Optioun gëlt déi selwecht Saach wéi -i .

-R Dateinumm

--just-symbolen = Dateinumm

Liest Symbolennummeren an hir Adressen aus Dateinumm , awer seelen se net an d'Ausgab aus. Dëst erméiglecht Är Output-Datei symbolesch zu absoluten Orte vum Speicher ze definéieren an anere Programmer. Dir kënnt dës Optioun méi wéi eemol benotzt.

Fir Kompatibilitéit mat anere ELF Linker, wann d'- R Optioun no engem Verzeichnisennamen gefollegt ass, anstatt en Dateinumm, gëtt dës als -rpfeng Optioun behandelt.

-s

--strip - all

Oder all Symbol Informatioune vun der Outputdatei.

-S

--strip-debug

Oder de Symbol vun der Debugger Symbol (awer net all Symbole) aus der Ausgabdatei.

-t

--viliichtung

Dréckt d'Nimm vun den Input Dateien als ld Prozesse.

-T Scriptfile

--script = scriptfile

Benotzt Scriptfile als Linker Skript. Dëse Skript ersetzt den Standardlinker Skript (anstatt dat ze addéieren). Dofir muss de Kommando bestëmme wat alles néideg ass fir d' Outputdatei ze beschreiwen. Falls Scriptfile net am aktuelle Verzeichnis existéiert, gesäit "ld" no bei de Verzeichnungen déi all Viruert -L- Optiounen spezifizéieren. Multiple -T Optionen accumuléieren.

-u Symbol

- sinnfinéiert = Symbol

Force Symbol gëtt an der Ausgabdatei als onbestëmmten Symbol geschaaft. Dat maache kann zB d'Verknëppung vun aner Module vu Standardbibliothèeren ausléisen. -u kënnt mat verschiddene Optiounsargumente repetéiert ginn fir méi speziell Zeechen z'erreechen. Dës Optioun ass equivalent dem "EXTERN" Linker Skript Kommando.

-Ur

Fir näischt anescht wéi C ++-Programmer ass dës Optioun äiskal wéi -r : Si generéiert opgeléist Ausgangsdauer --- dat heescht eng Ausgabdatei, déi sech als Input op ld déngen. Wann Linken vun C ++-Programmen verbonne sinn, maachen d'Referenzen op d'Konstruktoren op, am Géigesaz zu -r . Et funktionnéiert net ze benotzen -Ur op Dossieren, déi sech selwer verbonnen hunn mat -Ur ; Wann d'Konstruktiver Dësch gebaut gouf, kann et net addéieren. Benotzt -ou just fir déi lescht deelweis Link an -r fir déi aner.

--unique [= ABSCHITT ]

Schreift e getrennten Ausgababschnitt fir all Inputsektioun mat der Rubrik SECTION oder, wann d'optional Platzhalter SECTION Argument fehlt, fir all Waassereieeabschnitts section. Een Waasserdirekter ass een net spezifesch an engem Linker Skript genannt. Dir kënnt dës Optioun méi oft op der Kommandozeilegung benotzen; Et verhënnert d'normale Verschréiwung vun Inputabschnëtter mat dem selwechte Numm, Iwwerrissausgaababschnittsweisungen an engem Linker-Skript.

-v

--version

-V

Versioun d'Versiounsnummer fir ld . D'Option -V liest och d'ënnerstëtzte Emulationen.

-x

--Discard - all

Kucke alle lokalen Symboler.

-X

--Discard-Awunner

All temporär lokale Symboler läschen. Fir déi meescht Ziler, ass et all lokal Symboler, déi d'Numm vun Ufank un begéinen.

-y Symbol

--trace-symbol = Symbol

Den Numm vun all verlinkte Dateie dréckt an deem Symbol . Dës Optioun kann e puer Zäite ginn. Op villen Systemer ass et néideg ze ennersträichen.

Dës Optioun ass nëtzlech wann Dir e Wuert aschreift an Ären Link, awer weess net, wou d'Referenz kënnt.

-Y Wee

Bannt Wee op de Standardbibliothéik vum Wee. Dës Optioun existéiert fir Solaris Kompatibilitéit.

-z Schlësselwuert

D'erkannte Stëchwierder sinn "onitfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" a "nocopyreloc ". Déi aner Schlësselwierder gi fir Solaris Kompatibilitéit ignoréiert. "initfirst" markéiert den Objet ze initialiséieren éischt bei der Runtime virun all aner Objeten. "interpose" markéiert de Objet, datt seng Symboltablett viru all Symboler, awer de primären ausféierbar ass. "loadfltr" markéiert den Objet datt seng Filte direkt un der Runzäit veraarbecht ginn. "nodefaultlib" markéiert den Objet datt d'Sich no Ofhängegkeete vun dësem Objet ignoréiere all Standardbibliothéik Passagen. "nodelete" markéiert de Objet soll net op der Startzäit gelueden ginn. "nodlopen" markéiert d'Objekt net verfügbar fir "dlopen". "nodump" markéiert de Objet kann net vun "dldump" gedumppt ginn. "elo" markéiert den Objet mat der net-fauler Runtime-Bindung. "Urspronk" markéiert den Objet kann $ ORIGIN. "defs" verëffentlecht net definéiert Symboler. "muldefs" erméiglecht verschidde Definitioune. "combreloc" kombinéiert verschidde Reloc-Sektiounen a verkeeft si fir dynamesch Zeechekupperen z'erreechen.

"nocombreloc" behandelt verschidde Relocatiounen ze kombinéieren. "nocopyreloc" de Produzent vu Kopie Relaxen.

- ( Archivraim )

--start-Gruppenarchiven - Ännerung

D' Archiven sollen eng Lëscht vun Archivdateien sinn . Si kënnen entweder explizit Dateinamen, oder -l Optiounen.

Déi bezeechent Archiven sinn ëmmer erëm gesicht ginn, bis keng nei Friem Referenzen erstallt ginn. Normalerweis gëtt en Archiver just eemol an der Uerdnung gesicht, datt et op der Kommandozeechnung ass. Wann e Symbol an dësem Archiv néideg ass fir en onbestëmmte Symbol ze léisen, deen vun engem Objet an engem Archiv bezeechent gëtt deen spéider op der Kommandozeeche steet, de Linker net kéint dës Referenz opmaachen. Duerch Gruppéiere vun den Archiven sinn se all ëmmer erëm gesicht ginn, bis all méiglech Referenzen geléift sinn.

Dës Benotzung huet e bedeitende Präiserhéijungen. Et ass besser, et nëmmen ze benotzen wann et onvermeidlech roueg Referenzen tëschent zwee oder méi Archiver.

--accept-unknown-input-arch

--no-akzeptéieren-unbekannt-input-arch

Verkeeft de Linker fir Input Dateien ze akzeptéieren déi d'Architektur net erkannt ginn. D'Annahme ass datt de Benotzer weess wat se maachen an intensiv wëllt an dësen onbekannten Input Dateien verlinkt sinn. Dëst war den Standardverhalen vum Linker, virum Release 2.14. Den Standardverhalen vun der Verëffentlechung 2.14 un ass d'Input-Dateien ze refuséieren, sou datt d' optional --accept-unknown-input-arch addiert gouf fir de alen Verhalen erëm z'erreechen.

assuréiert Schlësselwuert

Dës Optioun gëtt ignoréiert fir SunOS Kompatibilitéit .

-Bdynamic

-dy

-call_shared

Link géint dynamesch Bibliothéiken. Dëst ass nëmmen op Plattformen ze sënnvoll, fir déi gemeinsam Partneren ënnerstëtzt. Dës Optioun ass normalerweis de Standard um sou Plattformen. Déi verschidden Varianten vun dëser Optioun sinn fir Kompatibilitéit mat verschiddene Systemer. Dir kënnt dës Optioun méi oft op der Kommandozeilegung benotzen: et beaflossen d'Bibliothéik fir d'Optionen -l opzemaachen, déi se verfollegen.

-Bgroup

Setzt den "DF_1_GROUP" -Flag an den "DT_FLAGS_1" -Anlaach am dynamesche Sektor. Dëst verursaacht den Runtime Linker fir Lookups an dësem Objet ze handhaben an seng Abhängigunge sinn nëmme bannent der Grupp. --no-ondefinéiert implizéiert. Dës Optioun ass nëmmen op ELF Plattformen ze sënnvoll, déi gemeinsame Bibliothéiks ënnerstëtzen .

-BATCH

-dn

-non_shared

-statist

Kuckt net vun de gemeinsame Bibliothéiken. Dëst ass nëmmen op Plattformen ze sënnvoll, fir déi gemeinsam Partneren ënnerstëtzt. Déi verschidden Varianten vun dëser Optioun sinn fir Kompatibilitéit mat verschiddene Systemer. Dir kënnt dës Optioun méi oft op der Kommandozeilegung benotzen: et beaflossen d'Bibliothéik fir d'Optionen -l opzemaachen, déi se verfollegen.

-Bsymbolic

Wann Dir eng gedeelte Bibliothéik kreéiert, bidd Verweigerunge fir globale Symboler op d'Definitioun an der Gemeinsame Bibliothéik, wann et se gëtt. Normalerweis ass et méiglech datt e Programm mat enger gemeinsamer Bibliothéik verbonne gëtt, fir d'Definitioun an der gemeinsamer Bibliothéik ze iwwerdroen. Dës Optioun ass nëmmen op ELFplatforms z'ënnerstëtzen déi verschidde Partnere verbidden.

- checkboxen

- Checkprobleemer

Frot de Linker net fir d'Adressadressen ze préiwen, nodeems se se ugi ginn, fir ze kucken ob et iwwerliewt gëtt. Normalerweis wäert de Linker de Scheck ausféieren, a wann et iergendeng Iwwerlappungen fonnt gëtt, ginn et geäntwert Fehlermeldung. De Linker weess et iwwer a mécht d'Zertifikater fir Sektiounen an Overlays. De Standardverhalen kann zréckgesat ginn andeems de Kommandozeechtschalter - Scheck-Sektiounen benotzt .

--cref

Ausgängeg eng Cross Referenztabelle. Wann eng Linker Kaart Datei generéiert gëtt, gëtt d'Cross Referenztabelle un d'Kaart Datei gedréckt. Sinn et op d'Standardausgang gedréckt.

De Format vun der Tabelle ass vëlleg einfach, sou datt et ganz einfach duerch en Skript wann et néideg gëtt. D'Symboler ginn ausgedréckt, sortéiert mam Numm. Fir all Symbol gëtt eng Lëscht vu Dateinumm gegeben. Wann de Symbol definéiert ass, gëtt déi éischt Datei déi Plaz vun der Definitioun. Déi weider Dateie enthält Referenzen op d'Symbol.

--no-definéieren-gemeinsam

Dës Optioun verhënnert d'Zuel vun Adressen op e gemeinsame Symboler. De Skriptbefehl "INHIBIT_COMMON_ALLOCATION" huet dee selwechte Effekt.

De --no definéierte-communielle Optioun erméiglecht d'Entkopplung vun Adressen fir gemeinsame Symbolen aus der Auswiel vum Typ vun der Ausgabdatei ze decoupléieren; Anescht wéi eng net-relocatable Ausgabstil Kräfte ginn Adressen zu gemeinsame Symboler. Benutze --no definéieren - gedeelten Allgemeng Symboler déi aus enger gedeelter Bibliothéik referenzéiert sinn fir Adressen nëmmen am Haaptprogramm ze ginn. Dëst eliminéiert den onbenutzten Duplikatespace an der Gemeinsame Bibliothéik an och verhënnert all méiglech Verwierklechung iwwer d'Léisung vun der falscher Duplicatioun, wann et vill Dynamik mat spezialiséierte Sichweeer fir d'Runtime-Symbol-Resolutioun ass.

--defsym symbol = expression

Schreift e globale Symbol an der Ausgabdatei, mat der absoluter Adress déi vum Äerder gezeechent gëtt . Dir kënnt dës Optioun esou oft wéi néideg sinn, fir verschidde Symboler an der Kommandozeechnung ze definéieren. Eng limitéierter Form vun Arithmetik gëtt fir den Ausdrock an dësem Kontext ënnerstëtzt: Dir kënnt e hexadezimal Konstante oder den Numm vun engem existente Symbol oder "+" a "-" benotzen oder hexadezimal Konstanten oder Symbolen addéieren oder subtrahéieren. Wann Dir méi ausgedréckt Ausdréck braucht, kuckt der Linker Kommando Sprooch aus engem Skript. Bemierkung: et däerf kee wäiss Plaz sinn tëschent Symbol , d'Gläichen Zeechen (`` = ''), an Ausdrock .

--demangle [= style ]

--no-demangle

Dës Optiounen kontrolléieren ob d'Symbolennummeren bei Fehlermeldung an aner Ausgab ze verteidegen. Wann de Linker ze verwierklechen ugeklickt ass, versicht et Symbolbezeechnungen ze liesen ze liestéieren: et Streik weist Spannungen ënnersträicht, wann se vum Objet Dateiformat benotzt ginn an ëmgeleet C ++ verschleeft Symbolsymboln an Benotzer Liesbare Numm. Verschidde Compiler hunn verschidde Mangelingstile. De optionalen Demandeur Stil Argument kann benotzt ginn fir e passende Stil fir Äre Compiler ze wielen. De Linker wäert ufänken wann net d'Ëmännerung COLLECT_NO_DEMANGLE gesaat ass. Dës Optiounen kënnen benotzt ginn fir de Standard überschritt.

--Dynamic-Linker Datei

Setzt den Numm vum dynamesche Linker. Dëst ass nëmme sinn ze sinn wann Dir dynamesch verknascht ELF-Executables generéiert. De standard dynamesche Linker ass normalerweis korrekt; benotze dat net, ausser Dir wësst wat Dir maacht.

--embedded-relocs

Dës Optioun ass nëmmen sënnvoll wann Dir MIPS Embedded PIC Code verbënnt, deen vun der -membedded-pic-Säit op den GNU-Compiler an d'Assembler erstallt gëtt. Et verursacht de Linker eng Tabell ze kreéieren déi mat der Laufzeit benotzt ka ginn all Daten, déi statesch initialiséiert goufen zu Pointer Wäerter. Kuckt de Code fir Testeruut / ld-empic fir Detailer.

- fatal Warnungen

Gidd all Warnungen als Feeler .

--force-exe-suffix

Gitt sécher datt eng Ausgabdatei e .exe Suffix hutt.

Wann eng komplett komplett verknüpfte Ausgabdatei kee " Exe " oder " .dll " Suffix hutt, setzt dës Optioun den Linker fir d'Ausgabdatei op ee mam selwechte Numm ze kopéieren mat engem ".exe" Suffix. Dës Optioun ass nëtzlech wann Dir onmodifizéiert Unix Makefiles op engem Microsoft Windows Host benotzt, well verschidde Versioune vu Windows net e Bild lafe, ausser datt et an engem ".exe" -Edifix endet.

--no-gc-Sektiounen

--gc-Sektiounen

Aktivéiert d'Müllammekollektioun vun onbenotéierten Inputabschnëtter. Et gëtt ignoréiert op Ziler déi dës Optioun net ënnerstëtzen. Dës Optioun ass net kompatibel mat -r , och sollt et mat dynamesche Verknëppung benotzt ginn. Den Standardverhalen (ouni dës Müllkollektioun net auszeféieren) kann restauréiert ginn a - no-gc-Sektiounen op der Kommandozeechnung.

--help

Dréckt d'Summumm iwwer d'Kommando-Linn op den Standardausgang a fuert eraus.

--Target-Hëllef

Druku e Summ vun all Zielspezifesch Optiounen op der normaler Ausgab an Ausfahrt.

-Kar mapfile

Druk op enger Linkkaart fir d'Datei Mapfile . Kuckt d'Beschreiwung vun der -M- Optioun, uewen.

--no-Keep-Memory

ld normalerweis optiméiert fir d'Geschwindegkeet vun der Gedächtnisverwendung duerch Cache d'Symboltabele vun den Inputdateien an de Gedächtnis. Dës Optioun erzielt ld fir datt d'Späichernutz optiméiert ka ginn, andeems d'Symboltabellen nach néideg sinn. Dëst kann eventuell verlaangt sinn, wann ld aus Gedächtnisplaz verléiert, während e groussen Ausféiergläich verbënnt.

--no -definéiert

-z defs

Normalerweis beim Schafung vun enger net symbolescher Shiftbibliothéik, sinn onbestëmmte Symboler erlaabt a lénks ze léisen duerch de Runtime Loader. Dës Optioune verännert dës sougenannte Symbol.

--Allow-Pluraldefinitioun

-z muldefs

Normalerweis wann e Symbol méi déif definéiert gëtt, mellt de Linker e fatalen Fehler. Dës Optiounen erlaaben verschidde Definitioune mat der éischter Definitioun.

--allow-shlib -feedinn

Allgemenge onbestëmmten Symboler an gemeinsamen Objeten, och wann --no-undefined gesat gëtt. Den Nettoergebnis ass datt déi ondefinéiert Symbolen an regelméissege Objeten nach e Feeler ausléisen, awer net definéiert Symboler an gemeinsame Objeten ginn ignoréiert. D'Ëmsetzung vu no_undefined erënnert datt d'Runtime Linker op onfeelbare Symboler sinn. Mä et ass op d'mannst e System (BeOS) wou net definéiert Symboler an Gemeinschaftsbibliothéiken normal sinn, well de Kernel se an der Längt Zäit breet a wielt déi Funktioun am Beschten fir déi aktuell Architektur. IE dynamesch wielt e passende memset Funktion. Anscheinend ass et och normal fir d'HPPA-Gemeinschaftsbibliothéiken ze hunn an onbestänneg Symboler ze hunn.

--no-undefined-Versioun

Normalerweis wann e Symbol eng onätzlech Versioun huet, de Linker ignoréieren. Dës Optioun verännert d'Symboler mat enger definéiert Versioun an e béise Fehl gëtt ofgeschéckt.

- Notze vu Warnungen

Normalerweis gitt e Fehler, wann Dir probéiert hutt Input Dateien zesummen ze verbannen, déi aus irgendwelchen Grënn net passen, vläicht well se fir verschidden Prozessoren oder fir verschidden Endiannesser kompiléiert ginn. Dës Optioun erzielt ld datt et sou eppes wéi méiglech Fehler erlaabt hätt. Dës Optioun soll nëmmen mat Suergfalt benotzt ginn, a Fäll wou Dir eng speziell Aktioun hutt geholl, déi garantéiert datt d'Linkerfehler sinn ongülteg.

--no-Ganzarchiv

Schreift den Effekt vun der --whole-archive- Optioun fir d'nächst Archivdateien.

--noinhibit-exec

Bleift déi ausführbar Ausgabdatei wann et ëmmer nach nëtzlech ass. Normalerweis gëtt den Linker net e Resultatdatei produzéiert, wann et Problemer beim Linkprozess bezeechent; Et ass ofgeschaaft ouni en Ausgabdatei ze schreiwen, wann et en Fehler egal mécht.

-nostdlib

Nëmmen Recherchebibliothéik verëffentlechen explizit op der Kommandozeil ze spezifizéieren. D'Verknüpfungen vun de Bibliothéiken an de Linker-Skripten (inkl. Linker-Skripte, déi op der Kommandozeilung spezifizéiert sinn) genannt ginn ignoréiert.

- Formulaire Ausgabformat

ld ka configuréiert ginn fir méi wéi eng Zort Objetsdatei ze ënnerstëtzen. Wann Äre Ld dës Säit konfiguréiert ass, kënnt Dir d' Formulairoptioun benotze fir de Binärformat fir d' Outputobjektdatei ze spezifizéieren. Och wann ld konfiguréiert ass fir alternativ Objektformaten z'ënnerstëtzen, brauchs de normalerweis net dat ze spezifizéieren, well ld sollt configuréiert sinn fir de Standardausgangsformat am meeschten üblech Format op all Machine ze produzéieren. Ausgabformat ass e Text String, den Numm vun engem speziellen Format deen vun de BFD Bibliothéiken ënnerstëtzt gëtt. (Dir kënnt d'verfügbare binäre Formulairen mat objdump -i lizenzéieren .) De Skriptbefehl "OUTPUT_FORMAT" kann och d'Ausgabformuléierter spezifizéieren, awer dës Optioun üblech ass.

-qmagic

Dës Optioun gëtt ignoréiert fir Linux Kompatibilitéit.

-Qy

Dës Optioun gëtt fir SVR4 Kompatibilitéit ignoréiert.

--relax

Eng Optioun mat maschinnebefächene Effekter. Dës Optioun gëtt nëmmen op e puer Ziler ënnerstëtzt.

Op verschidden Plattforme maachen d'-- relax-Optiounen global Optimatiounsméiglechkeeten, déi méiglech sinn wann de Linker d'Adresséierung am Programm léisen, wéi relaxéierend Adressmodus an d'Synthetiséierung vun neien Instruktioune vun der Output-Objektdatei.

Op e puer Plattformen dës Link Zäit global Optiméiere kënnen symbolesch Debuggen vun der entsteht executable onméiglech maachen. Dëst ass bekannt fir de Matsushita MN10200- an d'MN10300 Famill vun den Prozessoren.

Op Plattformen wou et net ënnerstëtzt gëtt, --relax gëtt akzeptéiert, awer ignoréiert.

--retain-Zeechen- Dateiname

Bleift just déi Symboler déi an der Datei Dateinumm opgelëscht sinn, all aner. Date filen ass einfach e flaache Fichier, mat engem Symbol Symbol pro Zeil. Dës Optioun ass besonnesch nëtzlech am Ëmfeld (wéi VxWorks), wou eng grouss global Weltmeeschtertabelle lues a lues accumuléiert ass, fir de Rhythmus Gedäck ze erhalen.

--retain-Symboler-Fichier verleeft net definéiert Symboler oder Symboler fir Verlagerungen.

Dir däerft nëmmen --retain-symbols-Datei eemol de Kommandozeechen. Et iwwersetzt -s an -S .

-rpfeng dir

Fügt engem Verknüpfung op de Runtime Library Search Path. Dëst ass benotzt wann e ELF-executable mat gemeinsamen Objeten ass. All -Rad- Argumenter ginn verkettelt a si gi vum Runtime Linker benotzt. Dat benotzt se fir gemeinsam Aktiounen op Runtime ze fannen. D'- rpathoptioun gëtt och benotzt andeems se gemeinsame Objeten lokaliséiere kënnen, déi vun de gemeinsamen Objeten explizit an de Link geliwwert ginn; kuckt d'Beschreiwung vun der -rpfeng-Link- Optioun. Wann -rpfad net benotzt gëtt, wann e ELF-Exekutiv verbannt ass, gëtt den Inhalt vun der Ëmweltvariablen "LD_RUN_PATH" benotzt wann se definéiert sinn.

D'Option kann op SunOS benotzt ginn. Par default no, bei SunOS gëtt de Linker e Runtime Sich-Patch aus all de -L Optiounen ausginn. Wann eng -rpathoptioun benotzt gëtt, gëtt de Runtime Sichwee exklusiv mat der -rpfeng Méiglechkeeten gebueden , ignoréiert d'Optionen -L . Dëst kann nëtzlech sinn wann Dir gcc benotzt, wat et vill -L Optionen fënnt, déi onNFS Mount Dateisystemer sinn.

Fir Kompatibilitéit mat anere ELF Linker, wann d'- R Optioun no engem Verzeichnisennamen gefollegt ass, anstatt en Dateinumm, gëtt dës als -rpfeng Optioun behandelt.

-rpfad-Link DIR

Wann Dir ELF oder SunOS benotzt, eng deelweis Bibliothéik kann eng aner maachen. Dëst passéiert wann eng "ld -shared" Link eng gedeelten Bibliothéik als ee vun den Inputdateien enthält.

Wann de Linker eng sougenannte Abhängie trëfft wann et eng net-gedeelte, nët verglachbare Verknüpfung mécht, versprécht et automatesch déi erfuerderlech Bibliothéik ze fannen a se am Link steet, falls se net explizit enthale gëtt. An esou engem Fall weist d' Opmaach-ropath-Link déi éischt Veruerdnunge fir ze sichen. D' Option -rpath-Link kann eng Sequenz vun Verzeichnisser definéieren oder duerch eng Angabe vun enger Lëscht vun Nummeren, déi duerch Kolonien getrennt sinn oder duerch méi oft Zäiten.

Dës Optioun soll mat Viraussetzung benotzt ginn wéi et de Sichpfleeg iwwerschreidend ass, deen eventuell schwéier an eng gemeinsam Bibliothéik erstallt gouf. An dësem Fall kann et onméiglech sinn en anere Wee wéi den Runtime Linker ze maachen.

De Linker benotzt déi folgend Sichpfengen, fir d'erfuerderlech shared Bibliothéiken ze fannen.

1.

All Verzeichnisser spezifizéiert duerch -rpfeng-Link- Optiounen.

2.

All Verzeichnisser spezifizéiert duerch -ropmaart Optiounen. Den Ënnerscheed tëscht -rpath an -rpfengleng ass déi Verëffentlechungen déi mat -drpathoptiounen spezifizéiert sinn an der Runabel erfaasst a bei der Runtime benotzt ginn, während d'- rpfenglink- Optioun nëmme effektiv op Linkzäit ass. Et ass fir déi Mutterséier nëmmen.

3.

Op engem ELF-System, wann d' rrath- a "rpath-link" -Variën net benotzt gi sinn, kuckt den Inhalt vun der Ëmweltvariable "LD_RUN_PATH". Et ass fir déi Mutterséier nëmmen.

4.

Bei SunOS, wann d'- rpfeng- Optioun net benotzt gouf, no all Verännerungen, déi mat -L- Optiounen spezifizéiert sinn.

5.

Fir e Mutters Linker, ass den Inhalt vun der Ëmverännerung "LD_LIBRARY_PATH".

6.

Fir e gebuerene ELF Linker, sinn d'Verëffentlechungen an "DT_RUNPATH" oder "DT_RPATH" vun enger gemeinsamer Bibliothéik gesitt fir gemeinsam Partneren ze gebrauchen. D'"DT_RPATH" Eintrëder ignoréieren wann "DT_RUNPATH" Einträge existéieren.

7.

Déi Standardverzeichnisser, normalerweis / lib an / usr / lib .

8.

Fir e Mammegen Linker op engem ELF-System, wann d'Datei /etc/ld.so.conf existéiert, ass d'Lëscht vun Verpferde fonnt ginn an der Datei.

Wann déi erfuerderlech shared Bibliothéik net fonnt ginn ass, wäert de Linker eng Warnung eraushuelen an weider mat dem Link weiderféieren.

-verhaacht

-Bshareable

Erstellt eng gemeinsam Bibliothéik. Dëst ass am Moment nëmmen ënnerstëtzt op ELF, XCOFF an SunOS Plattformen. Op SunOS gëtt de Linker automatesch eng gemeinsam Bibliothek erstallt, wann d'-e Option net benotzt an et sinn onbestëmmte Symboler am Link.

--sort-common

Dës Optioun erzielt ld fir d'gemeinsam Symboler op d'Gréisst ze sortéieren wann se an de passenden Ausgababschnëtt plazéiert sinn. Eischt emol all déi een Byte Symboler, dann all déi zwou Byte, dann all déi véier Byte, an dann alles anescht. Dëst ass d'Lücken tëscht Symbolen ze vermeiden wéinst der Ausrichtung vun der Ausrichtung.

- Split-by-file [ Gréisst ]

Ähnlech wéi --split-by-reloc, awer e neie Output-Sektioun fir all Input- Datei erstallt, wann d' Gréisst uginn ass. Gréisst uginn fir eng Gréisst vun 1 wann net geäntwert.

--split-by-reloc [ count ]

Versprécht extra Ziler an der Ausgabdatei fir datt keng eenzeg Ausgab an der Datei méi wéi Zählofhängegunge enthält. Dëst ass nëtzlech wann Dir enorme Verletzbare Fichier fir en Zertifika vun realen Echtzäiter mat dem COFF-Objektdateierformat eroflueden; Well COFFcannot representéiert méi wéi 65535 Verpléissungen an enger eenzeger Rubrik. Bedenkt datt dëst net funktionnéiert mat Objektivdateformater déi net Ënnerstëtzung vun de Fächer ënnerstëtzen. De Linker gëtt net individuell Inputën fir d'Ëmverdeelung opgespléckt. Wann also een eenzegen Input Sekt méi wéi Zuel Verlagerungen enthält eng Ofreiung Sektioun enthält datt vill Verlagerungen sinn. Gréisst vun de Gréifen op e Wäert vun 32768.

--statuten

Compute an Statistiken iwwer d'Operatioun vum Linker, wéi d'Exekutioun Zäit a Gedächtnisnutzung.

- traditionell Format

Fir e puer Ziler, ass d'Ausgaass vum ld ënnerschiddlech op e Wee vun der Ausgab vun e puer existent Linker. Dëse Knäppche wëllt ld benotze stattdessen d'traditionell Format.

Zum Beispill, op SunOS, ld kombinéiert doppelte Einträgeren an der Symbolkierchetabelle. Dëst kann d'Gréisst vun enger Ausgabdatei mat voller Debugging-Informatioun ëm 30 Prozent reduzéieren. Leider kann den SunOS "dbx" Programm net déi liwweren Programm liwweren ("gdb" huet kee Problem). De - traditionell -Formatschalter erzielt ld net duplizéiert Eegele kombinéiere.

--section-start sectionname = org

Sicht e Sektioun an der Ausgabdatei an der absoluter Adress vun org . Dir benotzt dës Optioun esou vill wéi néideg fir verschidde Rubriken an der Kommandozeil ze fannen. org muss eng eenzeg hexadezimal Integer sinn; fir Kompatibilitéit mat anere Linker, kënnt Dir d'Leit 0x normalerweise mat hexadezimalen Wäerter verloossen. Bemierkung: et däerf kee wäiss Raum sinn tëschent deegleche Numm , d'Gläichen Zeechen (`` = '') a org .

-Tbss org

-Tata org

-Ttext org

Benotzt org als Startadresse fir --- respektiv --- den "bss", "data" oder "segment" vun der ausgedeelte Datei. org muss eng eenzeg hexadezimal Integer sinn; fir Kompatibilitéit mat anere Linker, kënnt Dir d'Leit 0x normalerweise mat hexadezimalen Wäerter verloossen.

--dll-verbose

- verbose

Versioun vun der Versiounsnummer fir ld a liz dat déi Linker Emulationen ënnerstëtzen. Wielt d'Input- Dateien an a kënnen net opgemaach ginn. Den Linker-Skript, dee vum Linker benotzt gëtt.

--version-script = Versioun-SkriptFile

Gitt de Numm vun engem Versiounskript op de Linker. Dëst gëtt normalerweis beim Erschreiwen vun Shiftbibliothrien benotzt fir méi Informatiounen iwwer d'Versioun vum Ierwe fir d'Bibliothéik ze kreéieren. Dës Optioun ass nëmmen op ELF Plattformen ze sënnvoll, déi gemeinsame Bibliothéiks ënnerstëtzen.

--warn-common

Warn wann e gemeinsame Symbol kombinéiert mat engem anere Symbol oder enger Symbol Definitioun. Unix Linker erlaben dës e bëssen neidesch Praxis, awer Linker op e puer aner Betriebssystemer net. Dës Optioun erlaabt Iech potenziell Problemer mat der globaler Symbol ze kombinéieren. Leider si verschidde Bibliothéiken dës Praxis benotzt, sou datt Dir e puer Warnungen iwwer Symbole an de Bibliothéiken an Är Programmer kritt.

Et gi verschidde Arten vun globalen Symbolen, illustréiert hier vun C Beispiller:

int i = 1;

Eng Definitioun, déi an den initialiséierte Dateschutz vun der Outputdatei féiert.

extern int i;

Eng ondefinéiert Referenz, déi net Plazenzäit zielt. Et muss entweder eng Definitioun oder e gemeinsame Symbol fir déi Variabel iergendwou sinn.

int i;

E gemeinsame Symbol. Wann et nëmmen (een oder méi) gemeinsame Symboler fir eng Variabel ass, geet et an den net initialiséierter Datenquell vun der Ausgabdatei. De Linker fusionnéiert verschidde gemeinsame Symboler fir déi selwecht Variabelen an e Symbol. Wann se ënnerschiddlech Gréissten sinn, da punkto déi gréisst Gréisst. De Linker wielt e gemeinsame Symbol an eng Deklaratioun, wann et eng Definitioun vun der selweschter Variablen gëtt.

Déi --warn-common option ka fënnef Warnunge produzéieren. Jiddesch Warnung besteet aus engem Paart vu Linnen: d'éischt beschreift just de Symbol, deen nëmmen beandrockt ass, an d'zweet beschreift de virdrun Symbol, deen mam selwechte Numm koum. Een oder zwee vun deenen zwee Symboler ginn e gemeinsame Symbol.

1.

Ee gemeinsame Symbol fir eng Referenz dreift, well et ass schonn eng Definitioun fir de Symbol.

(
): Warnung: Iwwerdeems vum Symbol <'symbol>' duerch Definitioun (
): Warnung: definéiert hei

2.

Ee gemeinsame Symbol an e Referenz dreemen, well eng spéider Definitioun vum Symbol duerstellt. Dëst ass dee selwechte wéi de leschte Fall, ausser datt d'Symboler op enger anerer Uerdnung getippt sinn.

(
): Warnung: Definitioune vum Zeechen < 'Iwwerreschter gemein (
): Warnung: heefeg hei ass

3.

Verschidden e gemeinsame Symbol mat engem eelste gläichgréissten gemeinsamen Symbol.

(
): Warnung: e puer allgemeng vun '' (
): Warnung: virdrun üblech ass hei

4.

Verschidden e gemeinsame Symbol mat engem e grousse groussen gemeinsamen Symbol.

(
): Warnung: gemeinsame vu ` 'iwwerdréit duerch gréisser allgemeng (
): Warnung:

5.

Verschidden e gemeinsame Symbol mat engem eelere klenge gemeinsamen Symbol. Dëst ass dee selwechte wéi de leschte Fall, ausser datt d'Symboler op enger anerer Uerdnung getippt sinn.

(
): Warnung: gemeinsame vu '' Iwwerreschter Klengst (
): Warnung:

--warn-constructairen

Waren wann et déi global Construktoren ginn benotzt. Dëst ass nëmme nëtzlech fir e puer Objektivdateiformate. Fir Formate wéi COFF oder ELF kann de Linker net d'Benotzung vu globalen Konstruktoren erkennen.

--warn-multiple-gp

Warn wann méi globale Pointerwerte an der Ausgabdatei néideg sinn. Dëst ass nëmme sënnvoll fir verschidde Prozessoren, wéi d'Alpha. Besonnesch hunn e puer Prozessoren ganz grouss Konstanten mat enger Sektioun gesat. Een spezielle Register (de globalen Zeiger) weist an d'Mëtt vun dësem Deel un, fir datt Konstanten effizient iwwer e Relatiounen vum Adressregistréierten baséiert sinn. Well den Offset am Bezuchs-Register relativ modesch ass fixéiert a relativ kleng (z. B. 16 Bits), limitéiert d'maximal Gréisst vum konstante Pool. Dofir ass et a gréissere Programmen oft vill méi globale Pointer Wäerter, fir all méiglech Konstanten ze bewäerten. Dës Optioun verursacht eng Warnung erauszefannen wann et dëse Fall fonktionnéiert.

--warn - eemol

Erënnert nëmmen eemol fir all onbestëmmten Symbol, anstatt e puer Mol am Modul, wat et bezunn.

--warn-section-align

Warn wann d'Adress vun engem Output Sektioun geännert gëtt wéinst Ausrichtung. Normalerweis gëtt d'Ausrichtung vun engem Input-Sektor gesaat. D'Adress gëtt nëmme geännert, wann et net explizit spezifizéiert gëtt; Dat heescht, wann de Kommando "SECTIONS" keng Startadressatioun fir de Sektioun gëtt.

--whole-Archiv

Fir all Archivi, deen op der Kommandozeeche no der Opentakt-Archivoptioun erwähnt gouf , all Objektsdatei am Archiv an de Link, anstatt d'Archiv vun den erfuerderen Objete bestëmmt. Dëst ass normalerweis benotzt fir en Archivdatei an eng gemeinsam Divisioun ze maachen, sou datt all Objet an der entstehter gedeelter Bibliothéik ofgeschloss ass. Dës Optioun kann méi wéi eemol benotzt ginn.

Zwee Notizen wann dës Optioun aus gcc benotzen: Eischt, gcc weess net iwwer dës Optioun, also musst Dir -Wl, -wolle archiv . Zweetens, vergiesst net ze benotzen -Wl, -no-Ganzarchiv nodeems Dir Är Lëscht vun Archiven benotzt, well gcc eng Lëscht vun Archiven op Äre Link ze addéiere an Dir däerft net datt dës Fändel och dës ugräifen.

Symbol ëmstridden

Benotzt e Wrapper-Funktion fir Symbol . All ondefinéierte Referenz op Symbol gëtt geléist op "__ wrap_symbol". Alles an iergendee Referenz op "__real_symbol" gëtt fir d' Symbol geléist.

Dëst kann benotzt ginn fir e Wrapper fir eng Systemfunktioun ze bidden. D'Wrapper-Funktion sollt "__wrap_symbol" genannt ginn. Wann et wëllt d'Systemfunktioun anzereechen, da sollt et "__ real_symbol" nennen.

Hei ass e klengt Beispill:

void * __wrap_malloc (int c) {printf ("malloc genannt mat% ld \ n", c); zréck __real_malloc (c); }}

Wann Dir Link an anere Code mat dëser Datei benotzt - use malloc - wrap all call op "malloc" d'Funktioun "__wrap_malloc" un. De Ruffe "__real_malloc" an "__wrap_malloc" ruffe déi richteg "Mallo" -Funktion.

Dir wëllt och eng "__real_malloc" -Funktion ubidden, sou datt Links ouni Fonktiounsbeschreiwung geléngt. Wann Dir dëst maacht, sollt Dir d'Definitioun vun "__ real_malloc" net am selwechte Fichier wéi "__wrap_malloc" setzen; Wann Dir et mécht, kann den Assembler de Ruff opléisen, ier de Linker eng Chance hat, et op "Mallock" ze packen.

--enable-new-dtags

-disibel-nei-dtags

Dëse Linker kann déi nei dynamesch Tags am ELF kreéieren. Awer déi ale ELF-Systeme kënne se net verstoen. Wann Dir spezifizéierbar gëtt , gëtt d'dynamesch Variablen geännert wéi néideg. Wann Dir spezifizéierbar - nei Détagë gëtt , gi keng nei dynamesch Variablen erstallt. Standard ginn déi nei dynamesch Variablen net erstallt. Bedenkt datt dës Optiounen nëmme fir FORSEN Systemen verfügbar sinn.

Den i386 PE Linker ënnerstëtzt d'- verännerte Optioun, déi d'Ausgaang eng dynamesch verknaschte Bibliothéik (DLL) ass anstatt e normale Programm aus. Dir sollt d'Ausgab "* .dll" nennen wann Dir dës Optioun benotzt. Zousätzlech ënnerstëtzt de Linker déi Standard "* .def" -Dateien, déi op der Linker Kommandozeileg wéi e Objetsdatei spezifizéiert sinn (an et ass virun Archiver déi exportéiert Symboler aus, fir datt se verlinkt sinn, wéi e normale Objekttitel).

Niewent der Optioun, déi all Ziler gemeinsam sinn, ënnerstëtzen den i386 PE Linker ergänzen aner Kommandozeilenoptiounen, déi speziell op d'i386 PE ass. Optiounen, déi Wäerter maachen, kënne vun hiren Wäerter duerch e Raum oder e Gläicheënnerscheed getrennt ginn.

--add-stdcall-Alias

Wann déi gezeechent ginn, ginn d'Symboler mat engem stdcall Suffix (@ nn ) exportéiert as-an och mat dem Suffix entlooss.

- baséiert Datei

Fichier als Numm vun engem Fichier benotzt fir an d'Basisadressen vun all Relocatiounen ze sichen fir d'DLLs mat Dlltool ze generéieren .

--dll

Erstellt en DLL statt e regelméisseg Utiliséierbar. Dir kënnt och -veränneren oder eng "LIBRARY" an engem ".def" Datei benotzen.

--enable-stdcall-fixup

-disable-stdcall-fixup

Wann de Link e Symbol gesäit, datt et net opléisse kann, da wäert et versoen, "Fuzzy Linking" ze maachen, andeems ee anere definéierte Symbol gesitt, deen nëmmen am Format vum Symbol Numm gëtt (cdecl vs stdcall) an ebe mam Symbol ze léisen vum Match. Zum Beispill konnt d'onendefinst Symbol "_foo" mat der Funktioun "_foo @ 12" verknëppelt ginn oder de onbestëmmte Symbol "_bar @ 16" kann mat der Funktioun "_bar" verknëppelt ginn. Wann de Linker dat dauert, da gëtt et eng Warnung gedréckt, well et normalerweis net verbonne fillt, awer vläicht importéiert Bibliothéiken aus Dritt Dlls entstoen kënnen dës Feature benotze fir ze benotzen. Wann dir - namebar-stdcall-fixup festleet , ass dës Fonktioun voll aktivéiert an d'Warnunge ginn net ausgedréckt. Wann Dir - Dossier-stdcall-fixup festleet , gëtt dës Fonktioun behënnert a sou Leeschtunge sinn als Fehler opgetruede ginn.

--export-all-symbole

Wann déi geäntwert sinn all globale Symbolen an den Objeten déi benotzt ginn fir eng DLL ze bauen, ginn vun der DLL exportéiert. Bedenkt datt dëst d'Default ass, wann et soss net exportéiert symbolesch wier. Wann d'Symboler explizit iwwer DEF-Dateien exportéiert ginn oder implizit iwwer Funktiounen exportéiert ginn, ass d'Standard net soss näischt exportéiert, wann dës Optioun gegeben gëtt. Bedenkt datt d'Symboler "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" an "impure_ptr" ginn net automatesch exportéiert ginn. Och Symbole, déi aus anere DLLs importéiert ginn, ginn net exportéiert, och Symbole déi de internen Layout bezeechnen, wéi déi mam "_head_" oder mat "_iname" beäntweren. Zousätzlech ginn och keng Symbole vum "libgcc", "libstd ++", "libmingw32" oder "crtX.o" exportéiert. Symboler, déi d'Nummen ufänken "__rtti_" oder "__builtin_" ginn net exportéiert ginn, fir mat C ++ DLLs ze hëllefen. Schlussendlech ass et eng extensiv Lëscht vu Cygwin-privat Symboler déi net exportéiert ginn (evident, dat gëlt iwwer d'DLL fir Cygwinn Ziler).

Dës Cygwin-Exclusioune sinn: "_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 ", an" ëmweltfrëndlech ".

--Exclude-Symbol Symbol , Symbol , ...

Gitt eng Lëscht vun Symbolen déi net automatesch exportéiert ginn. D'Symbolennummeren kënnen duerch Komma oder Kolonë begrenzt sinn.

- exclude-libs lib , lib , ...

Gitt eng Lëscht vu Archiver Bibliothéiken aus denen d'Symboler net automatesch exportéiert ginn. D'BibliothéikName kënnen ofgetrennt sinn duerch Kommanden oder Dierfer. Gitt "- exclude-libs ALL" exklusiv Symboler an all Archiver Bibliotheken vum automateschen Export. Symbolen, déi explizit an enger .def-Datei gelagert sinn, ginn nach ëmmer exportéiert, egal vu dëser Optioun.

- Fichier

Gitt d 'Datei aus. Sectiounen an der Datei ginn ëmmer op Dateieinstrumen begleeden déi verschidde vu dësen Nummern sinn. Dëst defaellt op 512.

- Reserveback

- Reservebesuch , engagéieren

Gitt de Betrag vum Gedäck ze reservéieren (an optional engagéieren) fir als Programm fir dëse Programm ze ginn. De Standard ass 1Mb reservéiert, 4K engagéiert.

- bildnergrond

Benotzt Wäert als Basisadress vun Ärem Programm oder dll. Dëst ass de klengste Späicherplatz, dee benotzt gëtt wann Äre Programm oder DLL geladen ass. Fir d'Notzung ze reduzéieren an d'Performance vun den Dlls ze verbesseren, däerf jiddereen eng eegene Basisadress hunn an all aner Dlls net iwwerlappt. De Standard ass 0x400000 fir executables, an 0x10000000 fir dlls.

--kill-at

Wann dat gegeben ass, gëtt d'stdcall Suffixes (@ nn ) aus Symboler entlooss, ier se exportéiert ginn.

--Major-Image-Versioun Wäert

Setzt d'Haapt Nummer vun der `` BildVarianne ''. Defaults op 1.

--Major-os-Versioun value

Setzt d'Haapt Nummer vun der `` os Versioun ''. Standardastellungen op 4.

--Major-Subsystem Versioun Wäert

Setzt d'Haapt Nummer vun der `` Subsystem Versioun ''. Standardastellungen op 4.

--minor-image-Versioun value

Setzt déi kleng Minoritéit vun der `` BildVarianne ''. Standardastellungen op 0.

--minor-os-Versioun value

Setzt d'kleng Unzuel vun der `` os Versioun ''. Standardastellungen op 0.

--minor-subsystem-Versioun value

Setzt d'kleng Unzuel vun der `` Subsystem Versioun ''. Standardastellungen op 0.

--output-def Datei

De Linker erlaabt d'Dateieffizienz déi eng DEF-Datei, déi der DLL entsprécht, déi den Linker generéiert. Dës DEF-Datei (déi sollt "* .def" genannt ginn) kann benotzt ginn fir eng Importbibliothek mat "dlltool" ze erstellen oder kann als Referenz op automatesch oder implizit Exporter symboliséiert ginn.

--out-implib- Fichier

De Linker erstallt d'Dateieffektivitéit, déi e Import import lib, deen der DLL entsprécht, deen de Linker generéiert. Dëse Import lib (deen als "* .dll.a" oder "* .a" genannt gëtt kann benotzt ginn fir Klienten géint déi generéiert DLL ze verbinderen; dëst Verhalen macht et méiglech datt Dir eng separat "dlltool" -Strëftbibliothek kreéiert.

--enable auto-image-base

Automatesch d'Bildbasis fir DLLs auswielen, ausser wann ee mat dem Argument "--image-base" uginn. Mat engem Hash deen aus dem DllName generéiert ass fir e unique Bildbasen fir all DLL z'erreechen, In-Memory Collisionen a Verzocker ze maachen déi d'Programmausféierung verginn kann verhënneren.

-disibel Auto-Image-Basis

Maacht automatësch net eng eegene Bildbasis. Wann et keng benotzesproocheg Biller ("--image-base") gëtt, benotzen d'Plattform Standard.

--dll-Sich-Prefix- Zeech

Wann Dir dynamesch mat engem DLL verbonne gëtt ouni eng Importbibliothéik, kuckt no " .dll" op "lib" basename> .dll ". Dëst Verhalenssituatioun erméiglecht liicht Distinenz tëschent DLLs fir déi verschidde `` Subplatforms '': natierlecht, cygwin, uwin, pw, etc. Zum Beispill Cygwin DLLs benotzen normalerweis "- dll-search-prefix = cyg".

--enable-auto-import

Setzt eng verëffentlecht Verknëppung vun "_symbol" op "__imp__symbol" fir DATA importéiert vun DLLs a kreéiert déi noutwendlech Dämmungssymbole beim Bueden vun den Importbibliothéiken mat deenen DATAexports. Dëst allgemeng wäert 'just funktionéieren' --- awer heiansdo kënnt Dir dës Noriicht gesinn:

"variabel" 'kann net automatesch importéiert ginn. Lire d'Dokumentatioun fir ld "--enable-auto-import" fir Detailer. "

Dëse Message trëfft wann e puer (Ënner) Expressioun eng Adress liesen déi schliisslech vun der Summe vun zwee Konstanten gëtt (Win32 Import Tabellen erlaben nëmmen een). Instanzen wou dësem ka vläicht zitéieren Accès zu Membere vu Strukturvariablen importéiert aus enger DLL, an och mat engem konstante Index an enger Variable variéieren, déi vun enger DLL importéiert ginn. All Muedewelt variéiert (Arrays, Struewëss, laang laang, etc) kann dës Fehler Zoustänn maachen. Allerdéngs, egal vu geneeem Datentyp vun der beleidegter exportéierter Variabel, ld wäert et ëmmer erméiglechen, d'Warnung erauszeginn an erauszekommen.

Et gi verschidde Weeër fir dës Schwieregkeet ze bewäerten, egal wéi den Datentyp vun der exportéierter Variabel ass:

Eng Manéier ass - useable-runtime-pseudo-reloc-switch. Dëst léisst d'Aufgab fir Referenzen an Äert Kënnegungscode fir Runtime-an Ëmstänn anzebezéien, sou datt dës Methode nëmme funktionnéiert wann d'Runtime-Environnement dës Fonktioun ënnerstëtzt.

Eng zweet Léisung ass eng vun de "Konstanten" ze zwéngen, eng Variabel ze sinn - dat ass onbekannt an onoptiméierbar op der Kompilatioun. Fir Arrays besteet zwou Méiglechkeeten: a) de Indexéierer (d'Adress vun der Array) eng Variabel maachen, oder b) den "konstante" Index eng Variabel maachen. Dofir:

extern Typ extern_array []; extern_array [1] -> {flüchtlecht Typ * t = extern_array; t [1]}

oder

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

Fir Strécker (an déi meescht aner Multiword Datentypen) ass déi eenzeg Méiglechkeet fir d'Struktur selwer (oder d'laang laang oder déi ...) Variabel ze maachen:

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

oder

extern laang laang extern_ll; extern_ll -> {flüchtlech laang laang * local_ll = & extern_ll; * local_ll}

Eng drëtt Method fir dës Schwieregkeet ze handelen ass d'Autoe importéieren fir de beleidegt Symbol ze markéieren an ze markéieren mat "__declspec (dllimport)". Allerdings, an der Praxis déi erfëllt d'Compile-Zäit # Definéiert fir ze weisen datt Dir eng DLL bauen, Clientéierungscode bauen, deen op d'DLL verlinkt gëtt oder einfach ze bauen / Verknëppelen op eng statesch Bibliothéik. Wann Dir d'Wiel tëschent den verschiddenen Methoden fir d'"direkte Adress mat dem konstante Versatz" opgeléist hutt, sollt Dir soen, typesch Real-Welt Gebrauch:

Original:

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

Solutioun 1:

--foo.h extern int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {/ * Dës Approche ass fir win32 an cygwin; net "optimiséieren" * / flüchtlech int * parr = arr; printf ("% d \ n", parr [1]); }}

Solution 2:

--foo.h / * Note: Auto-Export gëtt ugeholl (no __declspec (dllexport)) * / #if (definéiert (_WIN32) || definéiert (__ CYGWIN__)) && \! (definéiert (FOO_BUILD_DLL) || definéiert (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #elektioun #define FOO_IMPORT #pend extern FOO_IMPORT int arr []; --foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }}

A véierméiglech Wee fir dëst Problem ze vermeiden ass d'Bibliothéik nees ze codéieren, fir eng funktionell Interface anstatt eng Dateschutzfaarf fir déi beleidegend Variablen ze benotzen (zB set_foo () a get_foo () Accessoirefunktiounen).

-disibel-auto-import

Versucht net probéiert sophistesch Verknëppung vun "_symbol" op "__imp__symbol" fir DATAimports vun DLLs ze maachen.

--enable-runtime-pseudo-reloc

Wann Äre Code Exemplirë beschriwwen huet, déi am Abschnitt "Etéierbar Auto-Import" beschriwwe ginn ass, dh DATAimports vun DLL mat Net-Null Offset, gëtt de Schalter e Vecteure vun "Runtime Pseudo Relocatiounen" erstallt, déi benotzt kënne vun der Runtime-Umellung fir Referenzen anzewénken op dës Donnéeën an Ärem Clientcode.

-disibel-runtime-pseudo-reloc

Setzt keng Pseudo-Verdeelung fir Net-Null Offset DATA Imports aus DLLs. Dëst ass den Default.

--enable-extra-pe-debug

Méi ergëtt Debug-Info bezuelt mat Auto-Import Symbol Thunking.

--ielschnëtt

Setzt d'Rubrik Ausrichtung. Sections am Gedächtnis fänken ëmmer mat Adressen un, déi e puer vun dëser Zuel sinn. Standardastellungen op 0x1000.

--stack reservéiert

- Reserveback , engagéieren

Gitt de Betrag vum Erënnerung un ze reservéieren (an optional engagéieren) als Stack benotzt fir dëse Programm. De Standard ass 2Mb reservéiert, 4K engagéiert.

--subsystem

--subsystem déi : major

--subsystem déi : major . kleng

Gitt den Ënnerkennungssegment an deem Ärem Programm ausgefouert gëtt. Déi legal Wäerter fir déi "native", "fenster", "console", a "posix" sinn. Dir kënnt och d'Subsystem Versioun opmaachen.

Wichteg: Benotzt de Mann Kommando ( % Mann ) fir ze kucken wéi e Kommando op Äre Computer benotzt.