Dies ist der Befehl aarch64-linux-gnu-ld.bfd, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
ld - Der GNU-Linker
ZUSAMMENFASSUNG
ld [Optionen] Objektdatei ...
BESCHREIBUNG
ld fasst mehrere Objekt- und Archivdateien zusammen, verschiebt deren Daten und bindet Symbol
Verweise. Normalerweise ist der letzte Schritt beim Kompilieren eines Programms die Ausführung ld.
ld akzeptiert Linker Command Language-Dateien, die in einer Obermenge des Link-Editors von AT&T geschrieben wurden
Befehlssprachensyntax, um eine explizite und vollständige Kontrolle über den Verknüpfungsprozess zu ermöglichen.
Diese Manpage beschreibt nicht die Befehlssprache; siehe die ld Eintrag in "info" für full
Details zur Befehlssprache und zu anderen Aspekten des GNU-Linkers.
Diese Version von ld verwendet die universellen BFD-Bibliotheken, um mit Objektdateien zu arbeiten. Dies
erlaubt ld zum Lesen, Kombinieren und Schreiben von Objektdateien in vielen verschiedenen Formaten---für
B. COFF oder "a.out". Verschiedene Formate können miteinander verknüpft werden, um beliebige zu produzieren
verfügbare Art der Objektdatei.
Abgesehen von seiner Flexibilität ist der GNU-Linker hilfreicher als andere Linker bei der Bereitstellung von
diagnostische Informationen. Viele Linker brechen die Ausführung sofort ab, wenn sie auf ein
Error; wenn möglich, ld wird weiter ausgeführt, sodass Sie andere Fehler identifizieren können
(oder in einigen Fällen, um trotz des Fehlers eine Ausgabedatei zu erhalten).
Der GNU-Linker ld soll ein breites Spektrum an Situationen abdecken und möglichst kompatibel sein
wie möglich mit anderen Linkern. Infolgedessen haben Sie viele Möglichkeiten, seine
Verhalten.
OPTIONAL
Der Linker unterstützt eine Vielzahl von Befehlszeilenoptionen, aber in der Praxis nur wenige davon
werden in einem bestimmten Kontext verwendet. Zum Beispiel eine häufige Verwendung von ld ist zu verlinken
Standard-Unix-Objektdateien auf einem standardmäßigen, unterstützten Unix-System. Auf einem solchen System zu
eine Datei "hello.o" verlinken:
ich tue /lib/crt0.o hallo.o -lc
Das sagt ld um eine Datei namens . zu erzeugen Möglichkeiten für das Ausgangssignal: als Ergebnis der Verlinkung der Datei
"/lib/crt0.o" mit "hello.o" und der Bibliothek "libc.a", die aus dem Standard kommen wird
Verzeichnisse durchsuchen. (Siehe die Diskussion der -l Option unten.)
Einige der Befehlszeilenoptionen für ld kann an jeder Stelle in der Befehlszeile angegeben werden.
Optionen, die sich auf Dateien beziehen, wie z -l or -T, veranlassen Sie, dass die Datei an der
Punkt, an dem die Option in der Befehlszeile erscheint, relativ zu den Objektdateien und
andere Dateioptionen. Das Wiederholen von Nicht-Datei-Optionen mit einem anderen Argument hat entweder
keine weiteren Auswirkungen oder überschreiben frühere Vorkommnisse (die weiter links auf dem Befehl
Zeile) dieser Option. Optionen, die sinnvollerweise mehrfach angegeben werden können, sind
in den Beschreibungen unten vermerkt.
Nicht-Optionsargumente sind Objektdateien oder Archive, die miteinander verknüpft werden sollen. Sie
kann folgen, vorangehen oder mit Befehlszeilenoptionen gemischt werden, außer dass eine Objektdatei
Argument darf nicht zwischen einer Option und ihrem Argument stehen.
Normalerweise wird der Linker mit mindestens einer Objektdatei aufgerufen, aber Sie können auch andere angeben
Formen von binären Eingabedateien mit -l, -R, und die Skriptbefehlssprache. Wenn nicht binär
Eingabedateien überhaupt angegeben sind, erzeugt der Linker keine Ausgabe und gibt die
Nachricht Nein Varianten des Eingangssignals: Dateien.
Wenn der Linker das Format einer Objektdatei nicht erkennen kann, geht er davon aus, dass es sich um eine Datei handelt
Linker-Skript. Ein auf diese Weise spezifiziertes Skript ergänzt das Haupt-Linker-Skript, das für verwendet wird
den Link (entweder das Standard-Linker-Skript oder das mit -T). Dies
Die Funktion ermöglicht es dem Linker, auf eine Datei zu verlinken, die ein Objekt oder eine Datei zu sein scheint
Archiv, sondern definiert eigentlich nur einige Symbolwerte oder verwendet "INPUT" oder "GROUP", um
andere Objekte laden. Die Angabe eines Skripts auf diese Weise erweitert lediglich den Hauptlinker
Skript, wobei die zusätzlichen Befehle nach dem Hauptskript platziert werden; benutze die -T Möglichkeit zu ersetzen
das Standard-Linker-Skript vollständig, aber beachten Sie die Wirkung des "INSERT"-Befehls.
Bei Optionen, deren Namen aus einem einzelnen Buchstaben bestehen, müssen Optionsargumente entweder dem
Optionsbuchstabe ohne dazwischenliegende Leerzeichen oder als separate Argumente
unmittelbar nach der Option, die sie erfordert.
Bei Optionen, deren Namen aus mehreren Buchstaben bestehen, können entweder ein oder zwei Bindestriche vor dem
Optionsname; zum Beispiel, -Spur-Symbol und --trace-symbol sind gleichwertig. Hinweis---da
ist eine Ausnahme von dieser Regel. Mehrere Buchstabenoptionen, die mit einem Kleinbuchstaben 'o' beginnen
können nur zwei Striche vorangestellt werden. Dies soll Verwechslungen mit den -o Möglichkeit. So
z.B. -magisch setzt den Namen der Ausgabedatei auf Magie während --omagisch setzt die NMAGIC
Flag am Ausgang.
Argumente für aus mehreren Buchstaben bestehende Optionen müssen entweder durch ein vom Optionsnamen getrennt werden
Gleichheitszeichen, oder als separate Argumente direkt nach der Option angegeben werden, die
erfordert sie. Zum Beispiel, --trace-symbol foo und --trace-symbol=foo sind gleichwertig.
Eindeutige Abkürzungen der Namen von Optionen mit mehreren Buchstaben werden akzeptiert.
Hinweis---wenn der Linker indirekt über einen Compiler-Treiber aufgerufen wird (zB gcc) dann
allen Linker-Befehlszeilenoptionen sollte vorangestellt werden -WL, (oder was auch immer passend ist
für den jeweiligen Compiler-Treiber) wie folgt:
gcc -Wl,--Startgruppe foo.o bar.o -Wl,--Endgruppe
Dies ist wichtig, da sonst das Compiler-Treiberprogramm die
Linker-Optionen, was zu einem schlechten Link führt. Verwirrung kann auch beim Passieren von Optionen auftreten
die Werte durch einen Treiber erfordern, wie die Verwendung eines Leerzeichens zwischen Option und Argument
fungiert als Trennzeichen und bewirkt, dass der Treiber nur die Option an den Linker und die
Argument an den Compiler. In diesem Fall ist es am einfachsten, die verbundenen Formen von beiden zu verwenden
ein- und mehrbuchstabige Optionen, wie zum Beispiel:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
Hier ist eine Tabelle der generischen Befehlszeilenschalter, die vom GNU-Linker akzeptiert werden:
@Datei
Lesen Sie die Befehlszeilenoptionen von Datei. Die gelesenen Optionen werden anstelle der eingefügt
Original @Datei Möglichkeit. Wenn Datei nicht existiert oder nicht gelesen werden kann, dann ist die Option
wörtlich behandelt und nicht entfernt.
Optionen in Datei werden durch Leerzeichen getrennt. Ein Leerzeichen kann enthalten sein
in einer Option, indem Sie die gesamte Option in einfache oder doppelte Anführungszeichen setzen. Irgendein
Zeichen (einschließlich eines umgekehrten Schrägstrichs) können eingefügt werden, indem dem Zeichen vorangestellt wird
mit Backslash enthalten. Die Datei kann selbst zusätzliches @ enthaltenDatei Optionen; irgendein
solche Optionen werden rekursiv verarbeitet.
-a Stichwort
Diese Option wird aus Gründen der HP/UX-Kompatibilität unterstützt. Die Stichwort Argument muss eines von sein
die Saiten Archiv, von Locals geführtes, oder auch Standard. -ein Archiv ist funktional äquivalent zu
-Bstatisch, und die anderen beiden Schlüsselwörter sind funktional äquivalent zu -Bdynamisch. Dies
Option kann beliebig oft verwendet werden.
--Prüfung AUDITLIB
Fügt AUDITLIB zum Eintrag "DT_AUDIT" des Dynamikbereichs. AUDITLIB wird nicht geprüft
für Existenz, noch wird es den in der Bibliothek angegebenen DT_SONAME verwenden. Falls angegeben
mehrfach enthält "DT_AUDIT" eine durch Doppelpunkte getrennte Liste von Audit-Schnittstellen zu
verwenden. Wenn der Linker bei der Suche nach shared . ein Objekt mit einem Audit-Eintrag findet
Bibliotheken, fügt es einen entsprechenden Eintrag "DT_DEPAUDIT" in die Ausgabedatei ein. Dies
Option ist nur auf ELF-Plattformen sinnvoll, die die rtld-audit-Schnittstelle unterstützen.
-A Architektur
--architektur=Architektur
In der aktuellen Version von ld, diese Option ist nur für die Intel 960-Familie von
Architekturen. Darin ld Konfiguration, die Architektur Argument identifiziert die
besondere Architektur der 960-Familie, die einige Sicherheitsvorkehrungen ermöglicht und die
Archiv-Bibliothek-Suchpfad.
Zukünftige Veröffentlichungen von ld kann ähnliche Funktionen für andere Architekturen unterstützen
Familien.
-b Eingabeformat
--format=Eingabeformat
ld kann konfiguriert werden, um mehr als eine Art von Objektdatei zu unterstützen. Wenn dein ld is
so konfiguriert, können Sie die -b Option zur Angabe des Binärformats für die Eingabe
Objektdateien, die dieser Option in der Befehlszeile folgen. Sogar wenn ld ist konfiguriert
Um alternative Objektformate zu unterstützen, müssen Sie dies normalerweise nicht angeben, da ld
sollte so konfiguriert sein, dass als Standardeingabeformat jeweils das gängigste Format erwartet wird
Maschine. Eingabeformat ist eine Textzeichenfolge, der Name eines bestimmten Formats, das von . unterstützt wird
die BFD-Bibliotheken. (Sie können die verfügbaren Binärformate mit auflisten objdump -i.)
Sie können diese Option verwenden, wenn Sie Dateien mit einer ungewöhnlichen Binärdatei verknüpfen
Format. Sie können auch verwenden -b Formate explizit wechseln (beim Verlinken von Objektdateien
verschiedener Formate), indem Sie -b Eingabeformat vor jeder Gruppe von Objektdateien
in einem bestimmten Format.
Das Standardformat wird der Umgebungsvariablen "GNUTARGET" entnommen.
Sie können das Eingabeformat auch aus einem Skript heraus definieren, indem Sie den Befehl "TARGET" verwenden;
-c MRT-Befehlsdatei
--mri-script=MRT-Befehlsdatei
Zur Kompatibilität mit durch MRT erzeugten Linkern, ld akzeptiert Skriptdateien, die in an . geschrieben sind
alternative, eingeschränkte Befehlssprache, beschrieben in den MRT-kompatiblen Skriptdateien
Abschnitt der GNU ld-Dokumentation. Einführung von MRT-Skriptdateien mit der Option -c;; verwenden
-T Option zum Ausführen von Linker-Skripten, die im Allzweck-Skript geschrieben sind ld Scripting
Sprache. Wenn MRT-cmdfile ist nicht vorhanden, ld sucht es in den angegebenen Verzeichnissen
von jedem -L Optionen.
-d
-dc
-dp Diese drei Optionen sind gleichwertig; mehrere Formulare werden aus Kompatibilitätsgründen unterstützt
mit anderen Linkern. Sie weisen gemeinsamen Symbolen Platz zu, auch wenn ein verschiebbarer Ausgang
Datei wird angegeben (mit -r). Der Skriptbefehl "FORCE_COMMON_ALLOCATION" hat die
gleiche Wirkung.
--depaudit AUDITLIB
-P AUDITLIB
Fügt AUDITLIB zum Eintrag "DT_DEPAUDIT" des dynamischen Abschnitts. AUDITLIB ist nicht
auf Existenz überprüft, noch wird der in der Bibliothek angegebene DT_SONAME verwendet. Wenn
mehrfach angegeben "DT_DEPAUDIT" enthält eine durch Doppelpunkte getrennte Liste von Audit
Schnittstellen zu verwenden. Diese Option ist nur auf ELF-Plattformen sinnvoll, die die
rtld-Audit-Schnittstelle. Die Option -P wird für die Solaris-Kompatibilität bereitgestellt.
-e Eintrag
--Eintrag=Eintrag
Verwenden Sie die Eintrag als explizites Symbol für den Beginn der Ausführung Ihres Programms, anstatt
der Standardeinstiegspunkt. Wenn kein Symbol benannt ist Eintrag, der Linker wird es versuchen
parsen Eintrag als Nummer und verwenden Sie diese als Eingangsadresse (die Nummer wird
interpretiert in Basis 10; du darfst ein führendes verwenden 0x für Basis 16 oder eine führende 0 für Basis
8).
--exclude-libs lib,lib, ...
Gibt eine Liste von Archivbibliotheken an, aus denen Symbole nicht automatisch entnommen werden sollen
exportiert. Die Bibliotheksnamen können durch Kommas oder Doppelpunkte getrennt werden. Angabe
"--exclude-libs ALL" schließt Symbole in allen Archivbibliotheken vom automatischen Export aus.
Diese Option ist nur für den i386 PE-Zielport des Linkers und für ELF . verfügbar
gezielte Häfen. Für i386 PE sind die explizit in einer .def-Datei aufgeführten Symbole immer noch
exportiert, unabhängig von dieser Option. Für ELF-gerichtete Ports, davon betroffene Symbole
Option wird als ausgeblendet behandelt.
--exclude-modules-for-implib Modulen,Modulen, ...
Gibt eine Liste von Objektdateien oder Archivelementen an, aus denen Symbole nicht sein sollen
automatisch exportiert, die aber en gros in die Importbibliothek kopiert werden sollen
während der Verknüpfung generiert wird. Die Modulnamen können durch Kommas getrennt werden oder
Doppelpunkte und müssen genau mit den Dateinamen übereinstimmen, die von ld um die Dateien zu öffnen; für Archiv
Members, dies ist einfach der Membername, aber für Objektdateien muss der aufgeführte Name
schließen Sie jeden Pfad ein, der verwendet wird, um die Eingabedatei auf dem Linker anzugeben, und stimmen Sie genau damit überein
Befehlszeile. Diese Option ist nur für den i386 PE-Zielport des
Linker. Explizit in einer .def-Datei aufgeführte Symbole werden trotzdem exportiert, unabhängig von
diese Option.
-E
--export-dynamisch
--no-export-dynamisch
Beim Erstellen einer dynamisch verknüpften ausführbaren Datei mit dem -E Option oder die
--export-dynamisch Option bewirkt, dass der Linker alle Symbole zum dynamischen Symbol hinzufügt
Tisch. Die dynamische Symboltabelle ist der Satz von Symbolen, die von dynamischen . aus sichtbar sind
Objekte zur Laufzeit.
Wenn Sie keine dieser Optionen verwenden (oder die --no-export-dynamisch Option zu
das Standardverhalten wiederherstellen), enthält die dynamische Symboltabelle normalerweise nur
die Symbole, die von einem im Link erwähnten dynamischen Objekt referenziert werden.
Wenn Sie "dlopen" verwenden, um ein dynamisches Objekt zu laden, das auf die Symbole zurückgreifen muss
vom Programm definiert als ein anderes dynamisches Objekt, dann werden Sie wahrscheinlich
müssen Sie diese Option verwenden, wenn Sie das Programm selbst verknüpfen.
Sie können auch die dynamische Liste verwenden, um zu steuern, welche Symbole zum . hinzugefügt werden sollen
dynamische Symboltabelle, wenn das Ausgabeformat dies unterstützt. Siehe die Beschreibung von
--dynamische-Liste.
Beachten Sie, dass diese Option spezifisch für ELF-Zielports ist. PE-Ziele unterstützen ein ähnliches
Funktion zum Exportieren aller Symbole aus einer DLL oder EXE; siehe die Beschreibung von
--export-alle-symbole unten mit.
-EB Verknüpfen Sie Big-Endian-Objekte. Dies betrifft das Standardausgabeformat.
-DER Verknüpfen Sie Little-Endian-Objekte. Dies betrifft das Standardausgabeformat.
-f Name
--Hilfs=Name
Setzen Sie beim Erstellen eines gemeinsam genutzten ELF-Objekts das interne Feld DT_AUXILIARY auf den
angegebenen Namen. Dies teilt dem dynamischen Linker mit, dass die Symboltabelle des freigegebenen
Objekt soll als Hilfsfilter in der Symboltabelle des Shared Object verwendet werden
Name.
Wenn Sie später ein Programm mit diesem Filterobjekt verknüpfen, dann wird beim Ausführen des
Programms sieht der dynamische Linker das Feld DT_AUXILIARY. Wenn der dynamische Linker
alle Symbole aus dem Filterobjekt auflöst, wird zuerst geprüft, ob ein
Definition im gemeinsamen Objekt Name. Wenn es eines gibt, wird es anstelle des verwendet
Definition im Filterobjekt. Das gemeinsame Objekt Name muss nicht existieren. Und so kam es dass der
gemeinsames Objekt Name kann verwendet werden, um eine alternative Implementierung bestimmter
Funktionen, vielleicht zum Debuggen oder für maschinenspezifische Leistung.
Diese Option kann mehrmals angegeben werden. Die DT_AUXILIARY-Einträge werden erstellt
in der Reihenfolge, in der sie in der Befehlszeile erscheinen.
-F Name
--filter=Name
Setzen Sie beim Erstellen eines gemeinsam genutzten ELF-Objekts das interne Feld DT_FILTER auf den angegebenen
Name. Dies teilt dem dynamischen Linker mit, dass die Symboltabelle des gemeinsam genutzten Objekts, das
erstellt wird, soll als Filter auf die Symboltabelle des Shared Objects verwendet werden
Name.
Wenn Sie später ein Programm mit diesem Filterobjekt verknüpfen, dann wird beim Ausführen des
Programms sieht der dynamische Linker das Feld DT_FILTER. Der dynamische Linker wird
Symbole gemäß der Symboltabelle des Filterobjekts wie gewohnt auflösen, aber es
wird tatsächlich auf die Definitionen im gemeinsamen Objekt verweisen Name. Und so kam es dass der
Filter-Objekt kann verwendet werden, um eine Teilmenge der vom Objekt bereitgestellten Symbole auszuwählen
Name.
Einige ältere Linker verwendeten die -F Option in einer Kompilierungs-Toolchain für
Angeben des Objektdateiformats für Eingabe- und Ausgabeobjektdateien. Der GNU-Linker
nutzt dafür andere Mechanismen: die -b, --Format, --oformat Optionen, die
"TARGET"-Befehl in Linker-Skripten und die Umgebungsvariable "GNUTARGET". Die GNU
Linker ignoriert das -F Option, wenn kein gemeinsam genutztes ELF-Objekt erstellt wird.
-fini=Name
Rufen Sie beim Erstellen einer ausführbaren ELF-Datei oder eines freigegebenen Objekts NAME auf, wenn die ausführbare Datei oder
Shared Object wird entladen, indem DT_FINI auf die Adresse der Funktion gesetzt wird. Von
Standardmäßig verwendet der Linker "_fini" als aufzurufende Funktion.
-g Ignoriert. Zur Kompatibilität mit anderen Tools bereitgestellt.
-G Wert
--gpsize=Wert
Stellen Sie die maximale Größe der zu optimierenden Objekte mithilfe des GP-Registers auf Größe. Dies
ist nur für Objektdateiformate wie MIPS ELF sinnvoll, die das Putting Large unterstützen
und kleine Objekte in verschiedene Abschnitte. Dies wird für andere Objektdateien ignoriert
Formate.
-h Name
-soname=Name
Setzen Sie beim Erstellen eines gemeinsam genutzten ELF-Objekts das interne Feld DT_SONAME auf den angegebenen
Name. Wenn eine ausführbare Datei mit einem gemeinsam genutzten Objekt verknüpft ist, das ein DT_SONAME-Feld hat,
Wenn dann die ausführbare Datei ausgeführt wird, versucht der dynamische Linker, die freigegebene Datei zu laden
Objekt, das durch das Feld DT_SONAME angegeben wird, anstatt den Dateinamen zu verwenden, der an . gegeben wurde
der Linker.
-i Führen Sie einen inkrementellen Link durch (wie Option -r).
-init =Name
Rufen Sie beim Erstellen einer ausführbaren ELF-Datei oder eines freigegebenen Objekts NAME auf, wenn die ausführbare Datei oder
Shared Object geladen wird, indem DT_INIT auf die Adresse der Funktion gesetzt wird. Von
Standardmäßig verwendet der Linker "_init" als aufzurufende Funktion.
-l Namensspezifikation
--Bibliothek=Namensspezifikation
Fügen Sie die durch . angegebene Archiv- oder Objektdatei hinzu Namensspezifikation zur Liste der zu verlinkenden Dateien.
Diese Option kann beliebig oft verwendet werden. Wenn Namensspezifikation ist von der Form :Dateiname, ld
durchsucht den Bibliothekspfad nach einer Datei namens Dateinamen, andernfalls wird nach gesucht
Bibliothekspfad für eine Datei namens libnamespec.a.
Auf Systemen, die gemeinsam genutzte Bibliotheken unterstützen, ld kann auch nach anderen Dateien suchen als
libnamespec.a. Insbesondere auf ELF- und SunOS-Systemen ld sucht ein Verzeichnis nach
eine Bibliothek namens libnamespec.so bevor Sie nach einem Namen suchen libnamespec.a. (Von
Konvention weist eine ".so"-Erweiterung auf eine gemeinsam genutzte Bibliothek hin.) Beachten Sie, dass dieses Verhalten
trifft nicht auf ... zu :Dateiname, die immer eine Datei namens . angibt Dateinamen.
Der Linker durchsucht ein Archiv nur einmal an dem Ort, an dem er angegeben ist auf
die Befehlszeile. Wenn das Archiv ein Symbol definiert, das in einem Objekt undefiniert war
die vor dem Archiv auf der Befehlszeile erschienen ist, enthält der Linker die
entsprechende Datei(en) aus dem Archiv. Jedoch ein undefiniertes Symbol in einem Objekt
ein späteres Erscheinen in der Befehlszeile führt nicht dazu, dass der Linker das Archiv durchsucht
erneut.
Weitere Informationen im -( Option für eine Möglichkeit, den Linker zu zwingen, Archive mehrmals zu durchsuchen.
Sie können dasselbe Archiv mehrmals in der Befehlszeile auflisten.
Diese Art der Archivsuche ist Standard für Unix-Linker. Wenn Sie jedoch
Verwendung von ld Beachten Sie unter AIX, dass es sich vom Verhalten des AIX-Linkers unterscheidet.
-L Suchverzeichnis
--Bibliothekspfad=Suchverzeichnis
Pfad hinzufügen Suchverzeichnis zur Liste der Pfade, die ld sucht nach Archivbibliotheken und
ld Skripte steuern. Sie können diese Option beliebig oft verwenden. Die Verzeichnisse sind
in der Reihenfolge durchsucht, in der sie in der Befehlszeile angegeben sind. Verzeichnisse
die in der Befehlszeile angegeben sind, werden vor den Standardverzeichnissen durchsucht. Alle -L
Optionen gelten für alle -l Optionen, unabhängig von der Reihenfolge, in der die Optionen angezeigt werden.
-L Optionen haben keinen Einfluss darauf, wie ld sucht nach einem Linker-Skript, es sei denn -T Option ist
spezifiziert.
If Suchverzeichnis beginnt mit "=", dann wird das "=" durch das . ersetzt Sysroot Präfix,
gesteuert von der -Sysroot -Option oder bei der Konfiguration des Linkers angegeben.
Der Standardsatz der durchsuchten Pfade (ohne mit angegeben zu werden) -L) hängt davon ab, was
Emulationsmodus ld verwendet wird, und in einigen Fällen auch davon, wie es konfiguriert wurde.
Die Pfade können auch in einem Link-Skript mit dem Befehl "SEARCH_DIR" angegeben werden.
So spezifizierte Verzeichnisse werden an der Stelle durchsucht, an der das Linker-Skript
erscheint in der Befehlszeile.
-m Emulation
Emulieren Sie die Emulation Linker. Sie können die verfügbaren Emulationen mit dem
- ausführlich or -V Optionen.
Besitzt das -m Option nicht verwendet, wird die Emulation aus der "LDEMULATION"
Umgebungsvariable, falls diese definiert ist.
Andernfalls hängt die Standardemulation davon ab, wie der Linker konfiguriert wurde.
-M
--Karte drucken
Drucken Sie eine Link-Map in die Standardausgabe. Eine Link-Map informiert über die
Link, einschließlich der folgenden:
· Wo Objektdateien in den Speicher abgebildet werden.
· Wie gängige Symbole zugewiesen werden.
· Alle im Link enthaltenen Archivmitglieder mit Erwähnung des Symbols, das
veranlasste, dass das Archivmitglied eingezogen wurde.
· Die den Symbolen zugewiesenen Werte.
Hinweis - Symbole, deren Werte durch einen Ausdruck berechnet werden, der a . beinhaltet
Verweis auf einen vorherigen Wert desselben Symbols hat möglicherweise kein korrektes Ergebnis
in der Link-Map angezeigt. Dies liegt daran, dass der Linker Zwischenprodukte verwirft
Ergebnisse und behält nur den Endwert eines Ausdrucks. Unter solchen
Unter Umständen zeigt der Linker den Endwert in eckigen Klammern an.
So zum Beispiel ein Linker-Skript, das Folgendes enthält:
foo = 1
foo = foo * 4
foo = foo + 8
erzeugt die folgende Ausgabe in der Link-Map, wenn die -M Option wird verwendet:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
See Ausdrücke Weitere Informationen zu Ausdrücken in Linker-Skripten.
-n
--nmagie
Deaktivieren Sie die Seitenausrichtung von Abschnitten und deaktivieren Sie die Verknüpfung mit gemeinsam genutzten Bibliotheken. Wenn
das Ausgabeformat unterstützt magische Zahlen im Unix-Stil, markieren Sie die Ausgabe als "NMAGIC".
-N
--omagisch
Stellen Sie die Text- und Datenabschnitte so ein, dass sie lesbar und beschreibbar sind. Auch keine Seitenausrichtung
das Datensegment und deaktivieren Sie die Verknüpfung mit gemeinsam genutzten Bibliotheken. Wenn das Ausgabeformat
unterstützt magische Zahlen im Unix-Stil, markieren Sie die Ausgabe als "OMAGIC". Hinweis: Obwohl a
beschreibbarer Textabschnitt ist für PE-COFF-Ziele erlaubt, er entspricht nicht der
von Microsoft veröffentlichte Formatspezifikation.
--no-magic
Diese Option negiert die meisten Auswirkungen der -N Möglichkeit. Es setzt den Textabschnitt auf
schreibgeschützt sein und erzwingt die Seitenausrichtung des Datensegments. Hinweis - diese Option funktioniert
die Verknüpfung mit gemeinsam genutzten Bibliotheken nicht aktivieren. Verwenden -Bdynamisch dafür.
-o Möglichkeiten für das Ausgangssignal:
--ausgabe=Möglichkeiten für das Ausgangssignal:
Verwenden Sie die Möglichkeiten für das Ausgangssignal: als Name für das von . produzierte Programm ld; wenn diese Option nicht ist
angegeben, der Name a.aus wird standardmäßig verwendet. Der Skriptbefehl "OUTPUT" kann auch
Geben Sie den Namen der Ausgabedatei an.
-O Grad des
If Grad des ist ein numerischer Wert größer als Null ld optimiert die Ausgabe. Das könnte
dauert deutlich länger und sollte daher wohl nur für das Finale aktiviert werden
binär. Im Moment betrifft diese Option nur die Generierung von gemeinsam genutzten ELF-Bibliotheken. Zukunft
Releases des Linkers können von dieser Option mehr Gebrauch machen. Auch derzeit gibt es keine
Unterschied im Verhalten des Linkers für verschiedene Werte dieser Option ungleich Null.
Auch dies kann sich mit zukünftigen Versionen ändern.
--push-state
Die --push-state ermöglicht die Beibehaltung des aktuellen Status der Flags, die die
Eingabedateibehandlung, damit sie alle mit einem entsprechenden wiederhergestellt werden können
--Pop-Zustand .
Die abgedeckten Optionen sind: -Bdynamisch, -Bstatisch, -dn, -dy, -call_shared,
-non_shared, -statisch, -N, -n, - Ganzes Archiv, --no-whole-archiv, -r, -Ur,
--copy-dt-benötigt-Einträge, --no-copy-dt-benötigt-Einträge, --wie benötigt, --no-as-bened,
und -a.
Ein Ziel für diese Option sind Spezifikationen für pkg-config. Bei Verwendung mit dem
--libs Option werden alle eventuell benötigten Bibliotheken aufgelistet und dann ggf. verlinkt mit
die ganze Zeit. Es ist besser, etwas wie folgt zurückzugeben:
-Wl,--push-state,--nach Bedarf -libone -libtwo -Wl,--pop-state
Macht den Effekt von --push-state rückgängig, stellt die vorherigen Werte der Flags wieder her
Umgang mit Eingabedateien.
-q
--emit-relocs
Belassen Sie Relocation-Abschnitte und -Inhalte in vollständig verknüpften ausführbaren Dateien. Link posten
Analyse- und Optimierungstools benötigen diese Informationen möglicherweise, um korrekte Ergebnisse zu erzielen
Modifikationen von ausführbaren Dateien. Dies führt zu größeren ausführbaren Dateien.
Diese Option wird derzeit nur auf ELF-Plattformen unterstützt.
--force-dynamisch
Erzwingen Sie, dass die Ausgabedatei dynamische Abschnitte enthält. Diese Option ist spezifisch für VxWorks
Ziele.
-r
--versetzbar
Verschiebbare Ausgabe generieren – dh eine Ausgabedatei generieren, die wiederum als
Eingabe zu ld. Das wird oft genannt Teil- Linking. Als Nebeneffekt in Umgebungen
die standardmäßige magische Unix-Zahlen unterstützen, setzt diese Option auch die
magische Zahl auf "OMAGIC". Wenn diese Option nicht angegeben ist, ist eine absolute Datei
produziert. Beim Verknüpfen von C++-Programmen ist diese Option werden wir nicht Verweise auf auflösen
Konstrukteure; Verwenden Sie dazu -Ur.
Wenn eine Eingabedatei nicht das gleiche Format wie die Ausgabedatei hat, teilweises Verknüpfen
wird nur unterstützt, wenn diese Eingabedatei keine Verschiebungen enthält. Unterschiedlich
Ausgabeformate können weitere Einschränkungen haben; zum Beispiel einige "a.out"-basierte Formate
unterstützen keine teilweise Verknüpfung mit Eingabedateien in anderen Formaten.
Diese Option bewirkt dasselbe wie -i.
-R Dateinamen
--just-symbols=Dateinamen
Lesen Sie Symbolnamen und deren Adressen aus Dateinamen, aber nicht verschieben oder einschließen
es in der Ausgabe. Dadurch kann sich Ihre Ausgabedatei symbolisch auf absolut beziehen
Speicherorte, die in anderen Programmen definiert sind. Sie können diese Option mehr als verwenden
Einmal.
Zur Kompatibilität mit anderen ELF-Linkern, wenn die -R Option folgt ein Verzeichnis
Name, anstatt eines Dateinamens, wird er als -Pfad .
-s
--strip-all
Lassen Sie alle Symbolinformationen aus der Ausgabedatei weg.
-S
--strip-debug
Lassen Sie Debugger-Symbolinformationen (aber nicht alle Symbole) aus der Ausgabedatei aus.
-t
--verfolgen
Drucken Sie die Namen der Eingabedateien als ld verarbeitet sie.
-T Skriptdatei
--script=Skriptdatei
Verwenden Sie die Skriptdatei als Linker-Skript. Dieses Skript ersetzt ld's Standard-Linker-Skript
(anstatt es zu ergänzen), also Befehlsdatei muss alles Notwendige angeben, um
beschreiben die Ausgabedatei. Wenn Skriptdatei existiert nicht im aktuellen Verzeichnis,
"ld" sucht danach in den Verzeichnissen, die von einem der vorhergehenden angegeben sind -L Optionen. Mehrere
-T Optionen akkumulieren.
-dT Skriptdatei
--default-script=Skriptdatei
Verwenden Sie die Skriptdatei als Standard-Linker-Skript.
Diese Option ähnelt der --Skript Option, außer dass die Verarbeitung des Skripts ist
verzögert, bis der Rest der Befehlszeile verarbeitet wurde. Dies erlaubt
Optionen nach dem --default-script Option in der Befehlszeile, um die
Verhalten des Linker-Skripts, das wichtig sein kann, wenn die Linker-Befehlszeile
kann vom Benutzer nicht direkt gesteuert werden. (zB weil die Befehlszeile gerade ist
von einem anderen Werkzeug konstruiert, wie z gcc).
-u Symbol
--undefiniert=Symbol
Zwingen Symbol als undefiniertes Symbol in die Ausgabedatei eingetragen werden. Dies kann
zum Beispiel das Einbinden zusätzlicher Module aus Standardbibliotheken anstoßen. -u könnte sein
mit verschiedenen Optionsargumenten wiederholt, um zusätzliche undefinierte Symbole einzugeben. Dies
Option entspricht dem Linker-Skriptbefehl "EXTERN".
Wenn diese Option verwendet wird, um das Einziehen zusätzlicher Module in den Link zu erzwingen,
und wenn es ein Fehler ist, dass das Symbol undefiniert bleibt, dann ist die Option
--erforderlich definiert sollte stattdessen verwendet werden.
--require-definiert=Symbol
Verlange das Symbol ist in der Ausgabedatei definiert. Diese Option ist die gleiche wie Option
--nicht definiert außer dass wenn Symbol in der Ausgabedatei nicht definiert ist, dann ist der Linker
wird einen Fehler ausgeben und beenden. Der gleiche Effekt kann in einem Linker-Skript erzielt werden, indem
"EXTERN", "ASSERT" und "DEFINED" zusammen verwenden. Diese Option kann mehrfach verwendet werden
Mal, um zusätzliche Symbole zu erfordern.
-Ur Für alles andere als C++-Programme ist diese Option äquivalent zu -r: es erzeugt
verschiebbare Ausgabe --- dh eine Ausgabedatei, die wiederum als Eingabe für dienen kann ld. Wenn
Verknüpfen von C++-Programmen, -Ur die Referenzen auf Konstruktoren auflösen, im Gegensatz zu -r. Es tut
nicht zu verwenden -Ur auf Dateien, die selbst verlinkt wurden -Ur; einmal die
Konstruktortabelle erstellt wurde, kann sie nicht hinzugefügt werden. Verwenden -Ur nur zum letzten
Teilverbindung, und -r für die anderen.
--orphan-handling=MODUS
Steuern Sie, wie verwaiste Abschnitte behandelt werden. Ein verwaister Abschnitt ist nicht speziell
in einem Linker-Skript erwähnt.
MODUS kann einen der folgenden Werte haben:
"Platz"
Verwaiste Abschnitte werden gemäß der Strategie in einen geeigneten Ausgabeabschnitt platziert
beschrieben in Waise Abschnitte. Die Option --einzigartig beeinflusst auch, wie Abschnitte sind
platziert.
"verwerfen"
Alle verwaisten Abschnitte werden verworfen, indem Sie sie in die /VERWERFEN/ .
"warnen"
Der Linker platziert den verwaisten Abschnitt wie bei "place" und gibt außerdem eine Warnung aus.
"Error"
Der Linker wird mit einem Fehler beendet, wenn ein verwaister Abschnitt gefunden wird.
Die Standardeinstellung, wenn --verwaiste Behandlung nicht angegeben ist "Ort".
--einzigartig[=SEKTION]
Erstellt einen separaten Ausgabebereich für jeden passenden Eingabebereich SEKTIONoder wenn die
optionaler Platzhalter SEKTION Argument fehlt, für jeden verwaisten Eingabeabschnitt. Ein
Der verwaiste Abschnitt ist ein Abschnitt, der in einem Linker-Skript nicht ausdrücklich erwähnt wird. Sie können dies verwenden
Option mehrmals in der Befehlszeile; Es verhindert das normale Zusammenführen von Eingaben
Abschnitte mit demselben Namen, überschreiben Ausgabeabschnittszuweisungen in einem Linker-Skript.
-v
--Version
-V Anzeige der Versionsnummer für lddem „Vermischten Geschmack“. Seine -V Option listet auch die unterstützten Emulationen auf.
-x
--discard-all
Löschen Sie alle lokalen Symbole.
-X
--discard-locals
Löschen Sie alle temporären lokalen Symbole. (Diese Symbole beginnen mit systemspezifischen lokalen
Label-Präfixe, normalerweise .L für ELF-Systeme oder L für traditionelle a.out-Systeme.)
-y Symbol
--trace-symbol =Symbol
Drucken Sie den Namen jeder verknüpften Datei, in der Symbol erscheint. Diese Option kann gegeben sein
beliebig oft. Auf vielen Systemen ist es notwendig, einen Unterstrich voranzustellen.
Diese Option ist nützlich, wenn Sie ein undefiniertes Symbol in Ihrem Link haben, aber nicht wissen
woher die Referenz kommt.
-Y Weg
Speichern Weg zum Standardsuchpfad für Bibliotheken. Diese Option existiert für Solaris
Kompatibilität.
-z Stichwort
Die anerkannten Schlüsselwörter sind:
Kombinieren
Kombiniert mehrere Reloc-Abschnitte und sortiert sie, um eine dynamische Symbolsuche zu ermöglichen
Zwischenspeicherung möglich.
defs
Verbietet undefinierte Symbole in Objektdateien. Undefinierte Symbole in geteilten
Bibliotheken sind weiterhin erlaubt.
Ausführungsstapel
Markiert das Objekt als ausführbaren Stack erfordernd.
globale
Diese Option ist nur beim Erstellen eines gemeinsamen Objekts sinnvoll. Es macht die
Symbole, die von diesem gemeinsamen Objekt definiert werden, verfügbar für die Symbolauflösung von
nachträglich geladene Bibliotheken.
initzuerst
Diese Option ist nur beim Erstellen eines gemeinsamen Objekts sinnvoll. Es markiert das Objekt
damit seine Laufzeitinitialisierung vor der Laufzeitinitialisierung von
alle anderen Gegenstände, die gleichzeitig in den Prozess eingebracht werden. Ähnlich die
Die Laufzeit-Finalisierung des Objekts erfolgt nach der Laufzeit-Finalisierung von
irgendwelche anderen Objekte.
dazwischenlegen
Markiert das Objekt, das seine Symboltabelle vor allen Symbolen außer dem
primäre ausführbare Datei.
faul
Wenn Sie eine ausführbare oder gemeinsam genutzte Bibliothek generieren, markieren Sie diese, um der Dynamik mitzuteilen
Linker, um die Auflösung des Funktionsaufrufs auf den Punkt zu verschieben, an dem die Funktion aufgerufen wird
(Lazy Binding) und nicht zur Ladezeit. Lazy Binding ist die Standardeinstellung.
Ladefltr
Markiert das Objekt, dass seine Filter sofort zur Laufzeit verarbeitet werden.
Muldefs
Ermöglicht mehrere Definitionen.
nocombreloc
Deaktiviert die Kombination mehrerer Reloc-Abschnitte.
nocopyreloc
Deaktivieren Sie vom Linker generierte .dynbss-Variablen, die anstelle der in definierten Variablen verwendet werden
gemeinsam genutzte Bibliotheken. Kann zu dynamischen Textverschiebungen führen.
nodeFaultLib
Markiert das Objekt, dass die Suche nach Abhängigkeiten dieses Objekts alle ignoriert
Standardsuchpfade für Bibliotheken.
Knotenpunkt
Markiert, dass das Objekt zur Laufzeit nicht entladen werden soll.
nodloffen
Markiert das Objekt nicht für "dlopen" verfügbar.
nodump
Markiert, dass das Objekt nicht mit "dldump" gedumpt werden kann.
keinexecstack
Markiert das Objekt als nicht ausführbaren Stack erfordernd.
Text
Behandeln Sie DT_TEXTREL im Shared Object als Fehler.
kein Text
Behandeln Sie DT_TEXTREL in gemeinsam genutzten Objekten nicht als Fehler.
SMS
Behandeln Sie DT_TEXTREL in gemeinsam genutzten Objekten nicht als Fehler.
Norelro
Erstellen Sie im Objekt keinen ELF-Segmentheader "PT_GNU_RELRO".
jetzt an Wenn Sie eine ausführbare oder gemeinsam genutzte Bibliothek generieren, markieren Sie diese, um der Dynamik mitzuteilen
Linker zum Auflösen aller Symbole, wenn das Programm gestartet wird oder wenn die geteilte
Bibliothek ist mit der Verwendung von dlopen verknüpft, anstatt die Auflösung von Funktionsaufrufen aufzuschieben
bis zu dem Punkt, an dem die Funktion zum ersten Mal aufgerufen wird.
Herkunft
Markiert, dass das Objekt $ORIGIN enthalten kann.
relro
Legen Sie im Objekt einen ELF-Segmentkopf "PT_GNU_RELRO" an.
max-page-size=Wert
Setzen Sie die maximale Seitengröße der Emulation auf Wert.
gemeinsame-seitengröße=Wert
Stellen Sie die allgemeine Seitengröße der Emulation auf ein Wert.
Stapelgröße=Wert
Geben Sie eine Stapelgröße für in einem ELF-Segment "PT_GNU_STACK" an. Die Angabe von Null wird
Überschreiben Sie jede Standarderstellung von "PT_GNU_STACK"-Segmenten mit einer Größe ungleich Null.
Bundplt
In PLT-Einträgen immer BND-Präfix generieren. Unterstützt für Linux/x86_64.
keineextern-geschützten-daten
Behandeln Sie geschützte Datensymbole nicht als extern, wenn Sie eine gemeinsam genutzte Bibliothek erstellen. Dies
Option überschreibt den Linker-Backend-Standard. Es kann verwendet werden, um falsch zu umgehen
Verschiebungen gegen vom Compiler generierte geschützte Datensymbole. Updates auf
geschützte Datensymbole eines anderen Moduls sind für das resultierende freigegebene Modul nicht sichtbar
Bücherei. Unterstützt für i386 und x86-64.
call-nop=prefix-adr
Anruf-nop=Präfix-nop
call-nop=suffix-nop
call-nop=präfix-Byte
Call-nop = Suffix-Byte
Geben Sie den 1-Byte-"NOP"-Padding an, wenn Sie einen indirekten Aufruf in einen lokalen umwandeln
definierte Funktion, foo, über seinen GOT-Slot. call-nop=prefix-adr erzeugt "0x67
ruf foo". Anruf-nop=Präfix-nop erzeugt "0x90 call foo". call-nop=suffix-nop
erzeugt "call foo 0x90". call-nop=präfix-Byte erzeugt "Byte rufen Sie uns an! foo".
Call-nop = Suffix-Byte erzeugt "call foo ." Byte". Unterstützt für i386 und x86_64.
Andere Schlüsselwörter werden aus Gründen der Solaris-Kompatibilität ignoriert.
-( Archiv -)
--startgruppe Archiv --Endgruppe
Die Archiv sollte eine Liste von Archivdateien sein. Sie können entweder explizite Dateien sein
Namen, oder -l Optionen.
Die angegebenen Archive werden wiederholt durchsucht, bis keine neuen undefinierten Referenzen gefunden werden
erstellt. Normalerweise wird ein Archiv nur einmal in der angegebenen Reihenfolge durchsucht
auf der Kommandozeile. Wenn ein Symbol in diesem Archiv benötigt wird, um ein undefiniertes
Symbol, auf das ein Objekt in einem Archiv verweist, das später in der Befehlszeile erscheint,
der Linker wäre nicht in der Lage, diesen Verweis aufzulösen. Durch die Gruppierung der Archive,
sie alle werden wiederholt durchsucht, bis alle möglichen Referenzen aufgelöst sind.
Die Verwendung dieser Option ist mit erheblichen Leistungskosten verbunden. Es ist am besten, es nur zu verwenden, wenn
zwischen zwei oder mehr Archiven unvermeidliche Zirkelbezüge bestehen.
--accept-unknown-input-arch
--no-accept-unknown-input-arch
Weist den Linker an, Eingabedateien zu akzeptieren, deren Architektur nicht erkannt werden kann. Die
Annahme ist, dass der Nutzer weiß, was er tut und bewusst verlinken möchte
in diesen unbekannten Eingabedateien. Dies war das Standardverhalten des Linkers, bevor
Version 2.14. Das Standardverhalten ab Release 2.14 besteht darin, solche Eingaben abzulehnen
Dateien, und so die --accept-unknown-input-arch Option wurde hinzugefügt, um das alte wiederherzustellen
Verhalten.
--wie benötigt
--no-as-bened
Diese Option betrifft ELF DT_NEEDED-Tags für dynamische Bibliotheken, die im Befehl erwähnt werden
Linie nach dem --wie benötigt Möglichkeit. Normalerweise fügt der Linker ein DT_NEEDED-Tag für . hinzu
jede dynamische Bibliothek, die in der Befehlszeile erwähnt wird, unabhängig davon, ob die Bibliothek
tatsächlich benötigt wird oder nicht. --wie benötigt bewirkt, dass ein DT_NEEDED-Tag nur ausgegeben wird für
eine Bibliothek, die at zur Verbesserung der Gesundheitsgerechtigkeit Punkt in Link erfüllt ein nicht schwaches undefiniertes Symbol
Referenz aus einer regulären Objektdatei oder, wenn die Bibliothek nicht im DT_NEEDED . gefunden wird
Listen anderer benötigter Bibliotheken, eine nicht schwache undefinierte Symbolreferenz von einer anderen
benötigte dynamische Bibliothek. Objektdateien oder Bibliotheken, die in der Befehlszeile erscheinen nachdem
die betreffende Bibliothek hat keinen Einfluss darauf, ob die Bibliothek als gebraucht angesehen wird. Das ist
ähnlich den Regeln zum Extrahieren von Objektdateien aus Archiven. --no-as-bened
stellt das Standardverhalten wieder her.
--add-benötigt
--no-add-benötigt
Diese beiden Optionen wurden aufgrund der Ähnlichkeit ihrer Namen mit den
--wie benötigt und --no-as-bened Optionen. Sie wurden ersetzt durch
--copy-dt-benötigt-Einträge und --no-copy-dt-benötigt-Einträge.
-behaupten Stichwort
Diese Option wird aus Gründen der SunOS-Kompatibilität ignoriert.
-Bdynamisch
-dy
-call_shared
Link gegen dynamische Bibliotheken. Dies ist nur auf Plattformen sinnvoll, für die geteilt wird
Bibliotheken werden unterstützt. Diese Option ist normalerweise die Standardeinstellung auf solchen Plattformen. Die
verschiedene Varianten dieser Option dienen der Kompatibilität mit verschiedenen Systemen. Du darfst
Verwenden Sie diese Option mehrmals in der Befehlszeile: Sie betrifft die Bibliothekssuche nach
-l Optionen, die darauf folgen.
-Bgruppe
Setzen Sie im dynamischen Abschnitt im Eintrag "DT_FLAGS_1" das Flag "DF_1_GROUP". Dies
bewirkt, dass der Laufzeitlinker Lookups in diesem Objekt verarbeitet und seine Abhängigkeiten
nur innerhalb der Gruppe durchgeführt. --unresolved-symbols=alles melden ist impliziert. Dies
Option ist nur auf ELF-Plattformen sinnvoll, die gemeinsam genutzte Bibliotheken unterstützen.
-Bstatisch
-dn
-non_shared
-statisch
Verlinken Sie nicht gegen gemeinsam genutzte Bibliotheken. Dies ist nur auf Plattformen sinnvoll, für die
gemeinsame Bibliotheken werden unterstützt. Die verschiedenen Varianten dieser Option sind für
Kompatibilität mit verschiedenen Systemen. Sie können diese Option mehrmals auf der
Befehlszeile: Beeinflusst die Bibliothekssuche nach -l Optionen, die darauf folgen. Dies
Option impliziert auch --unresolved-symbols=alles melden. Diese Option kann verwendet werden mit
-geteilt. Dies bedeutet, dass eine gemeinsam genutzte Bibliothek erstellt wird, aber dass alle
Externe Referenzen der Bibliothek müssen aufgelöst werden, indem Einträge aus statischen gezogen werden
Bibliotheken.
-Bsymbolisch
Binden Sie beim Erstellen einer gemeinsam genutzten Bibliothek Verweise auf globale Symbole an die Definition
innerhalb der gemeinsam genutzten Bibliothek, falls vorhanden. Normalerweise ist es möglich, dass ein Programm verlinkt
gegen eine gemeinsam genutzte Bibliothek, um die Definition innerhalb der gemeinsam genutzten Bibliothek zu überschreiben. Dies
Option kann auch mit dem --export-dynamisch Option beim Anlegen einer Position
unabhängig ausführbar, um Verweise auf globale Symbole an die Definition innerhalb zu binden
die ausführbare Datei. Diese Option ist nur auf ELF-Plattformen sinnvoll, die Shared . unterstützen
Bibliotheken und positionieren unabhängige ausführbare Dateien.
-Bsymbolische-Funktionen
Binden Sie beim Erstellen einer Shared Library Referenzen auf globale Funktionssymbole an die
Definition innerhalb der gemeinsam genutzten Bibliothek, falls vorhanden. Diese Option kann auch mit dem
--export-dynamisch Option, beim Erstellen einer positionsunabhängigen ausführbaren Datei zu binden
Verweise auf globale Funktionssymbole auf die Definition innerhalb der ausführbaren Datei. Dies
Option ist nur auf ELF-Plattformen sinnvoll, die gemeinsam genutzte Bibliotheken und Positionen unterstützen
unabhängige ausführbare Dateien.
--dynamische-liste=dynamische-Listen-Datei
Geben Sie dem Linker den Namen einer dynamischen Listendatei an. Dies wird normalerweise verwendet, wenn
Erstellen gemeinsamer Bibliotheken, um eine Liste von globalen Symbolen anzugeben, deren Referenzen
sollte nicht an die Definition innerhalb der gemeinsam genutzten Bibliothek gebunden sein oder erstellen
dynamisch verknüpfte ausführbare Dateien, um eine Liste von Symbolen anzugeben, die hinzugefügt werden sollen
die Symboltabelle in der ausführbaren Datei. Diese Option ist nur auf ELF-Plattformen sinnvoll
die gemeinsam genutzte Bibliotheken unterstützen.
Das Format der dynamischen Liste entspricht dem Versionsknoten ohne Umfang und Knoten
Name. Sehen VERSION .
--dynamische-listendaten
Nehmen Sie alle globalen Datensymbole in die dynamische Liste auf.
--dynamic-list-cpp-new
Stellen Sie die integrierte dynamische Liste für den C++-Operator new und delete bereit. Es ist hauptsächlich nützlich
zum Erstellen von gemeinsam genutzten libstdc++.
--dynamic-list-cpp-typeinfo
Stellen Sie die integrierte dynamische Liste für die Identifizierung des C++-Laufzeittyps bereit.
--check-sections
- NO-Check-Sektionen
Fragt den Linker nicht um Abschnittsadressen zu überprüfen, nachdem sie zugewiesen wurden, um zu sehen, ob
es gibt Überschneidungen. Normalerweise führt der Linker diese Prüfung durch, und wenn er findet
bei Überschneidungen werden entsprechende Fehlermeldungen ausgegeben. Der Linker weiß davon, und
berücksichtigt Abschnitte in Überlagerungen. Das Standardverhalten kann wiederhergestellt werden
mit dem Befehlszeilenschalter --check-sections. Abschnittsüberlappung ist normalerweise nicht
auf verschiebbare Links überprüft. In diesem Fall können Sie die Überprüfung erzwingen, indem Sie die
--check-sections .
--copy-dt-benötigt-Einträge
--no-copy-dt-benötigt-Einträge
Diese Option beeinflusst die Behandlung dynamischer Bibliotheken, auf die durch DT_NEEDED-Tags verwiesen wird
innerhalb Dynamische ELF-Bibliotheken, die in der Befehlszeile erwähnt werden. Normalerweise wird der Linker nicht
Fügen Sie für jede Bibliothek, die in einem DT_NEEDED-Tag erwähnt wird, ein DT_NEEDED-Tag zur Ausgabe-Binärdatei hinzu
in einer dynamischen Eingabebibliothek. Mit --copy-dt-benötigt-Einträge auf dem Befehl angegeben
Zeile, jedoch haben alle dynamischen Bibliotheken, die ihr folgen, ihre DT_NEEDED-Einträge
hinzugefügt. Das Standardverhalten kann mit wiederhergestellt werden --no-copy-dt-benötigt-Einträge.
Diese Option wirkt sich auch auf die Auflösung von Symbolen in dynamischen Bibliotheken aus.
Mit --copy-dt-benötigt-Einträge Dynamische Bibliotheken, die in der Befehlszeile erwähnt werden, sind
rekursiv durchsucht, indem sie ihren DT_NEEDED-Tags zu anderen Bibliotheken folgen, um
Auflösen von Symbolen, die von der Ausgabe-Binärdatei benötigt werden. Mit der Standardeinstellung ist jedoch die
Die Suche nach folgenden dynamischen Bibliotheken wird mit der dynamischen Bibliothek beendet
selbst. Es werden keine DT_NEEDED-Links durchlaufen, um Symbole aufzulösen.
--cref
Geben Sie eine Querverweistabelle aus. Wenn eine Linker-Map-Datei generiert wird, wird das Kreuz
Referenztabelle wird in die Kartendatei gedruckt. Andernfalls wird es auf dem Standard gedruckt
Ausgabe.
Das Format der Tabelle ist bewusst einfach gehalten, damit sie problemlos von
ggf. ein Skript. Die Symbole werden nach Namen sortiert ausgedruckt. Für jedes Symbol,
eine Liste von Dateinamen wird angegeben. Wenn das Symbol definiert ist, ist die erste aufgeführte Datei die
Ort der Definition. Wenn das Symbol als gemeinsamer Wert definiert ist, dann sind alle Dateien
wo dies passiert, erscheint als nächstes. Schließlich sind alle Dateien, die auf das Symbol verweisen,
gelistet.
- nicht definieren-gemeinsam
Diese Option verhindert die Zuweisung von Adressen zu gemeinsamen Symbolen. Das Skript
Befehl "INHIBIT_COMMON_ALLOCATION" hat die gleiche Wirkung.
Die - nicht definieren-gemeinsam Option ermöglicht die Entkopplung der Entscheidung, Adressen zuzuordnen
Gemeinsame Symbole aus der Wahl des Ausgabedateityps; ansonsten ein nicht versetzbarer
Ausgabetyp erzwingt die Zuweisung von Adressen zu allgemeinen Symbolen. Verwenden von - nicht definieren-gemeinsam
ermöglicht die Zuweisung von Common-Symbolen, die aus einer Shared Library referenziert werden
Adressen nur im Hauptprogramm. Dadurch wird der ungenutzte doppelte Speicherplatz im
gemeinsam genutzte Bibliothek und verhindert auch mögliche Verwirrung bei der Auflösung des Falschen
Duplizieren, wenn viele dynamische Module mit spezialisierten Suchpfaden für
Auflösung der Laufzeitsymbole.
--defsym=Symbol=Ausdruck
Erstellen Sie in der Ausgabedatei ein globales Symbol, das die absolute Adresse enthält, die durch . angegeben wird
Ausdruck. Sie können diese Option so oft wie nötig verwenden, um mehrere zu definieren
Symbole in der Befehlszeile. Eine eingeschränkte Form der Arithmetik wird für die
Ausdruck in diesem Zusammenhang: Sie können eine hexadezimale Konstante oder den Namen eines
vorhandenes Symbol oder verwenden Sie "+" und "-", um hexadezimale Konstanten hinzuzufügen oder zu subtrahieren oder
Symbole. Wenn Sie ausführlichere Ausdrücke benötigen, sollten Sie den Linker-Befehl verwenden
Sprache aus einem Skript. Hinweis: Es sollte kein Leerraum dazwischen sein Symbol, der
Gleichheitszeichen ("="), und Ausdruck.
--demangle[=Stil]
-No-Demangle
Diese Optionen steuern, ob Symbolnamen in Fehlermeldungen und anderen verzerrt werden
Ausgang. Wenn dem Linker gesagt wird, dass er demangler soll, versucht er, Symbolnamen in a . darzustellen
lesbare Form: Es entfernt führende Unterstriche, wenn sie von der Objektdatei verwendet werden
-Format und konvertiert C++-Mangel-Symbolnamen in benutzerlesbare Namen. Unterschiedlich
Compiler haben verschiedene Mangling-Stile. Das optionale demangle-Stilargument kann
verwendet werden, um einen geeigneten Entschlüsselungsstil für Ihren Compiler auszuwählen. Der Linker wird
demangle standardmäßig, es sei denn, die Umgebungsvariable COLLECT_NO_DEMANGLE eingestellt ist. Diese
Optionen können verwendet werden, um die Standardeinstellung zu überschreiben.
-IDatei
--dynamischer-linker=Datei
Legen Sie den Namen des dynamischen Linkers fest. Dies ist nur bei der Generierung sinnvoll
dynamisch verknüpfte ausführbare ELF-Dateien. Der standardmäßige dynamische Linker ist normalerweise korrekt;
Verwenden Sie dies nicht, es sei denn, Sie wissen, was Sie tun.
--no-dynamic-linker
Lassen Sie beim Erstellen einer ausführbaren Datei die Anforderung für einen dynamischen Linker weg, der unter verwendet werden soll
Ladezeit. Dies ist nur für ausführbare ELF-Dateien sinnvoll, die dynamische . enthalten
Umzüge und erfordert in der Regel einen Einstiegspunktcode, der diese verarbeiten kann
Umzüge.
--tödliche-Warnungen
--keine-tödlichen-Warnungen
Behandeln Sie alle Warnungen als Fehler. Das Standardverhalten kann mit der Option . wiederhergestellt werden
--keine-tödlichen-Warnungen.
--force-exe-Suffix
Stellen Sie sicher, dass eine Ausgabedatei ein .exe-Suffix hat.
Wenn eine erfolgreich erstellte, vollständig verknüpfte Ausgabedatei keine ".exe" oder ".dll" enthält
Suffix, diese Option zwingt den Linker, die Ausgabedatei in eine mit demselben Namen zu kopieren
mit einem ".exe"-Suffix. Diese Option ist nützlich, wenn Sie unmodifizierte Unix-Makefiles auf einem
Microsoft Windows-Host, da einige Windows-Versionen kein Image ausführen, es sei denn, es ist
endet mit einem ".exe"-Suffix.
--gc-Abschnitte
--no-gc-sections
Aktivieren Sie die Garbage Collection von nicht verwendeten Eingabeabschnitten. Sie wird bei Zielen ignoriert, die dies tun
unterstützt diese Option nicht. Das Standardverhalten (diesen Müll nicht auszuführen)
Sammlung) kann durch Angabe von . wiederhergestellt werden --no-gc-sections auf der Kommandozeile. Notiz
dass die Garbage Collection für Ziele im COFF- und PE-Format unterstützt wird, aber die
Die Umsetzung gilt derzeit als experimentell.
--gc-Abschnitte entscheidet, welche Eingabeabschnitte verwendet werden, indem Symbole untersucht werden und
Umzüge. Der Abschnitt mit dem Eintragssymbol und alle Abschnitte mit
Symbole, die in der Befehlszeile nicht definiert sind, werden beibehalten, ebenso wie Abschnitte, die
Symbole, die von dynamischen Objekten referenziert werden. Beachten Sie, dass beim Erstellen von gemeinsam genutzten Bibliotheken die
Linker muss davon ausgehen, dass jedes sichtbare Symbol referenziert wird. Sobald dieser anfängliche Satz von
Abschnitte bestimmt wurde, markiert der Linker rekursiv jeden Abschnitt als verwendet
durch ihre Verlegungen referenziert. Sehen --Eintrag und --nicht definiert.
Diese Option kann gesetzt werden, wenn ein Teillink erstellt wird (aktiviert mit Option -r). In diesem
Fall muss die Wurzel der gehaltenen Symbole entweder durch an --Eintrag or
--nicht definiert -Option oder durch einen "ENTRY"-Befehl im Linker-Skript.
--print-gc-sections
--no-print-gc-sections
Listen Sie alle Abschnitte auf, die von der Garbage Collection entfernt wurden. Die Auflistung wird auf stderr gedruckt.
Diese Option ist nur wirksam, wenn die Garbage Collection über das
--gc-Abschnitte) Möglichkeit. Das Standardverhalten (die Abschnitte nicht aufzulisten, die
entfernt) kann durch Angabe von . wiederhergestellt werden --no-print-gc-sections in der Kommandozeile.
--Druckausgabeformat
Geben Sie den Namen des Standardausgabeformats aus (möglicherweise beeinflusst durch andere Befehlszeilen
Optionen). Dies ist die Zeichenfolge, die in einem "OUTPUT_FORMAT"-Linker-Skript erscheinen würde
Befehl.
--Druckspeichernutzung
Benutzte Größe, Gesamtgröße und belegte Größe von Speicherbereichen drucken, die mit dem . erstellt wurden SPEICHER
Befehl. Dies ist bei eingebetteten Zielen nützlich, um einen schnellen Überblick über die Menge an freiem zu haben
Erinnerung. Das Ausgabeformat hat eine Überschrift und eine Zeile pro Region. es ist
sowohl für den Menschen lesbar als auch mit Tools leicht zu analysieren. Hier ist ein Beispiel für eine Ausgabe:
Speicherregion Verwendete Größe Regionsgröße %age Verwendet
ROM: 256 KB 1 MB 25.00%
Arbeitsspeicher: 32 MB 2 GB 0.00%
--help
Drucken Sie eine Zusammenfassung der Befehlszeilenoptionen auf der Standardausgabe und beenden Sie sie.
--target-help
Drucken Sie eine Zusammenfassung aller zielspezifischen Optionen auf der Standardausgabe und beenden Sie sie.
-Karte=Kartendatei
Drucken Sie eine Link-Map zur Datei Kartendatei. Siehe die Beschreibung des -M Möglichkeit, oben.
--no-keep-memory
ld optimiert normalerweise die Geschwindigkeit über die Speichernutzung durch Zwischenspeichern der Symboltabellen von
Eingabedateien im Speicher. Diese Option sagt ld um stattdessen die Speichernutzung zu optimieren, indem
die Symboltabellen nach Bedarf erneut lesen. Dies kann erforderlich sein, wenn ld läuft aus
Speicherplatz beim Verknüpfen einer großen ausführbaren Datei.
--no-undefiniert
-z defs
Melden Sie nicht aufgelöste Symbolreferenzen aus regulären Objektdateien. Dies geschieht auch dann, wenn
der Linker erstellt eine nicht-symbolische gemeinsam genutzte Bibliothek. Der Schalter
--[no-]allow-shlib-undefiniert steuert das Verhalten bei der Meldung von ungelösten
Referenzen, die in gemeinsam genutzten Bibliotheken gefunden werden, in die verlinkt wird.
--allow-multiple-definition
-z Muldefs
Wenn ein Symbol mehrmals definiert wird, meldet der Linker normalerweise einen fatalen
Error. Diese Optionen erlauben mehrere Definitionen und die erste Definition wird verwendet.
--allow-shlib-undefiniert
--no-allow-shlib-undefiniert
Erlaubt oder verbietet undefinierte Symbole in gemeinsam genutzten Bibliotheken. Dieser Schalter ist ähnlich wie
--no-undefiniert außer dass es das Verhalten bestimmt, wenn die undefinierten Symbole
in einer gemeinsam genutzten Bibliothek und nicht in einer regulären Objektdatei. Es hat keinen Einfluss darauf, wie
undefinierte Symbole in regulären Objektdateien werden behandelt.
Das Standardverhalten besteht darin, Fehler für alle undefinierten Symbole zu melden, auf die in verwiesen wird
Shared Libraries, wenn der Linker verwendet wird, um eine ausführbare Datei zu erstellen, aber
sie, wenn der Linker verwendet wird, um eine gemeinsam genutzte Bibliothek zu erstellen.
Die Gründe für das Zulassen undefinierter Symbolreferenzen in gemeinsam genutzten Bibliotheken, die unter angegeben sind
Linkzeit sind das:
· Eine zum Linkzeitpunkt angegebene gemeinsam genutzte Bibliothek ist möglicherweise nicht dieselbe wie diejenige, die
zur Ladezeit verfügbar, sodass das Symbol möglicherweise zur Ladezeit auflösbar ist.
· Es gibt einige Betriebssysteme, zB BeOS und HPPA, bei denen undefinierte Symbole in
Shared Libraries sind normal.
Der BeOS-Kernel patcht beispielsweise Shared Libraries zur Ladezeit zur Auswahl
welche Funktion für die aktuelle Architektur am besten geeignet ist. Das ist
verwendet, um beispielsweise dynamisch eine geeignete Memset-Funktion auszuwählen.
--keine-undefinierte-Version
Normalerweise ignoriert der Linker, wenn ein Symbol eine undefinierte Version hat. Dies
Option verbietet Symbole mit undefinierter Version und es wird ein schwerwiegender Fehler ausgegeben
stattdessen.
-Default-Symver
Erstellen und verwenden Sie eine Standardsymbolversion (den soname) für nicht versionierte exportierte Symbole.
--default-imported-symver
Erstellen und verwenden Sie eine Standardsymbolversion (den soname) für nicht versionierte importierte Symbole.
--no-warn-mismatch
Normalerweise ld gibt einen Fehler aus, wenn Sie versuchen, Eingabedateien zu verknüpfen, die
aus irgendeinem Grund nicht zusammenpassen, vielleicht weil sie für verschiedene kompiliert wurden
Prozessoren oder für verschiedene Endianness. Diese Option sagt ld dass es sollte
stillschweigend solche möglichen Fehler zulassen. Diese Option sollte nur mit Vorsicht verwendet werden, in
Fälle, in denen Sie spezielle Maßnahmen ergriffen haben, um sicherzustellen, dass die Linker-Fehler
unangemessen.
--no-warn-search-mismatch
Normalerweise ld gibt eine Warnung aus, wenn während einer Bibliothek eine inkompatible Bibliothek gefunden wird
Suche. Diese Option schaltet die Warnung stumm.
--no-whole-archiv
Deaktivieren Sie den Effekt des - Ganzes Archiv Option für nachfolgende Archivdateien.
--noinhibit-exec
Bewahren Sie die ausführbare Ausgabedatei auf, wenn sie noch verwendbar ist. Normalerweise ist der Linker
erzeugt keine Ausgabedatei, wenn während des Verknüpfungsprozesses Fehler auftreten; es
beendet, ohne eine Ausgabedatei zu schreiben, wenn irgendein Fehler ausgegeben wird.
-nostdlib
Durchsuchen Sie nur Bibliotheksverzeichnisse, die explizit in der Befehlszeile angegeben sind. Bücherei
Verzeichnisse, die in Linker-Skripten angegeben sind (einschließlich Linker-Skripten, die auf der
Kommandozeile) werden ignoriert.
--oformat=Ausgabeformat
ld kann konfiguriert werden, um mehr als eine Art von Objektdatei zu unterstützen. Wenn dein ld is
so konfiguriert, können Sie die --oformat Option zum Angeben des Binärformats für
die Ausgabeobjektdatei. Sogar wenn ld ist konfiguriert, um alternatives Objekt zu unterstützen
Formate müssen Sie dies normalerweise nicht angeben, da ld sollte konfiguriert werden, um zu produzieren
als Standardausgabeformat das gängigste Format auf jedem Rechner. Ausgabeformat ist eine
text string, der Name eines bestimmten Formats, das von den BFD-Bibliotheken unterstützt wird. (Du kannst
die verfügbaren Binärformate mit auflisten objdump -i.) Der Skriptbefehl
"OUTPUT_FORMAT" kann auch das Ausgabeformat angeben, aber diese Option überschreibt es.
-Kuchen
--pic-ausführbare Datei
Erstellen Sie eine positionsunabhängige ausführbare Datei. Dies wird derzeit nur auf ELF . unterstützt
Plattformen. Positionsunabhängige ausführbare Dateien ähneln insofern Shared Libraries
sie werden vom dynamischen Linker an die virtuelle Adresse verschoben, für die das Betriebssystem wählt
sie (die zwischen Aufrufen variieren können). Wie normale dynamisch verknüpfte ausführbare Dateien
sie können ausgeführt werden und Symbole, die in der ausführbaren Datei definiert sind, können nicht überschrieben werden durch
gemeinsam genutzte Bibliotheken.
-qMagie
Diese Option wird aus Gründen der Linux-Kompatibilität ignoriert.
-Qy Diese Option wird aus Gründen der SVR4-Kompatibilität ignoriert.
--Entspannen Sie sich
--keine-entspannen
Eine Option mit maschinenabhängigen Effekten. Diese Option wird nur von wenigen unterstützt
Ziele.
Auf einigen Plattformen ist die --Entspannen Sie sich Option führt zielspezifische, globale Optimierungen durch
die möglich werden, wenn der Linker die Adressierung im Programm auflöst, wie z
Adressmodi entspannen, neue Anweisungen synthetisieren, kürzere Version von . auswählen
aktuelle Anweisungen und Kombinieren von konstanten Werten.
Auf einigen Plattformen können diese globalen Optimierungen der Linkzeit zu einer symbolischen Fehlersuche führen
die resultierende ausführbare Datei unmöglich. Dies ist bekanntlich bei den Matsushita . der Fall
MN10200 und MN10300 Prozessorfamilie.
Auf Plattformen, auf denen dies nicht unterstützt wird, --Entspannen Sie sich wird akzeptiert, aber ignoriert.
Auf Plattformen, auf denen --Entspannen Sie sich wird die Option akzeptiert --keine-entspannen kann verwendet werden, um zu deaktivieren
das Merkmal.
- Retain-Symbole-Datei =Dateinamen
Behalten einzige die in der Datei aufgeführten Symbole Dateinamen, alle anderen verwerfen. Dateinamen
ist einfach eine flache Datei mit einem Symbolnamen pro Zeile. Diese Option ist besonders
nützlich in Umgebungen (wie VxWorks), in denen eine große globale Symboltabelle vorhanden ist
nach und nach akkumuliert, um den Laufzeitspeicher zu schonen.
--retain-symbols-Datei die nicht verwerfen Sie undefinierte Symbole oder Symbole, die für benötigt werden
Umzüge.
Sie können nur angeben --retain-symbols-Datei einmal in der Kommandozeile. Es überschreibt -s
und -S.
-rPfad=dir
Fügen Sie dem Suchpfad der Laufzeitbibliothek ein Verzeichnis hinzu. Dies wird beim Verknüpfen eines ELF . verwendet
ausführbar mit Shared Objects. Alle -Pfad Argumente werden verkettet und an . übergeben
den Laufzeitlinker, der sie verwendet, um gemeinsam genutzte Objekte zur Laufzeit zu finden. Die -Pfad
Option wird auch beim Auffinden von Shared Objects verwendet, die von Shared Objects benötigt werden
explizit im Link enthalten; siehe die Beschreibung des -rpath-link Möglichkeit. Wenn
-Pfad wird nicht verwendet, wenn eine ausführbare ELF-Datei verknüpft wird, der Inhalt der Umgebung
die Variable "LD_RUN_PATH" wird verwendet, wenn sie definiert ist.
Die -Pfad Option kann auch unter SunOS verwendet werden. Standardmäßig wird der Linker unter SunOS
Bilden Sie einen Laufzeitsuchpfad aus all den -L Optionen gegeben ist. Wenn eine -Pfad zu erhalten
verwendet wird, wird der Laufzeitsuchpfad ausschließlich über die -Pfad Optionen,
Ignorieren der -L Optionen. Dies kann nützlich sein, wenn Sie gcc verwenden, das viele hinzufügt -L
Optionen, die sich auf NFS-gemounteten Dateisystemen befinden können.
Zur Kompatibilität mit anderen ELF-Linkern, wenn die -R Option folgt ein Verzeichnis
Name, anstatt eines Dateinamens, wird er als -Pfad .
-rpath-link=dir
Bei Verwendung von ELF oder SunOS kann eine gemeinsam genutzte Bibliothek eine andere erfordern. Dies geschieht, wenn ein
Der Link "ld -shared" enthält eine gemeinsam genutzte Bibliothek als eine der Eingabedateien.
Wenn der Linker auf eine solche Abhängigkeit stößt, wenn er ein nicht gemeinsam genutztes, nicht verschiebbares
Link, wird automatisch versucht, die erforderliche gemeinsam genutzte Bibliothek zu finden und sie einzubinden
im Link, wenn es nicht explizit enthalten ist. In einem solchen Fall ist die -rpath-link zu erhalten
gibt den ersten zu durchsuchenden Satz von Verzeichnissen an. Die -rpath-link Option kann angeben
eine Folge von Verzeichnisnamen entweder durch Angabe einer Liste von Namen getrennt durch
Doppelpunkte oder durch mehrfaches Erscheinen.
Diese Option sollte mit Vorsicht verwendet werden, da sie den möglicherweise vorhandenen Suchpfad überschreibt
wurde hart in eine gemeinsam genutzte Bibliothek kompiliert. In einem solchen Fall ist es möglich,
unbeabsichtigt einen anderen Suchpfad als der Laufzeitlinker.
Der Linker verwendet die folgenden Suchpfade, um erforderliche gemeinsam genutzte Bibliotheken zu finden:
1. Alle von . angegebenen Verzeichnisse -rpath-link Optionen.
2. Alle von . angegebenen Verzeichnisse -Pfad Optionen. Der Unterschied zwischen -Pfad und
-rpath-link sind die Verzeichnisse, die durch . angegeben sind -Pfad Optionen sind in der
ausführbar und zur Laufzeit verwendet, während die -rpath-link Option ist nur wirksam
zur Linkzeit. Suche -Pfad wird auf diese Weise nur von nativen Linkern unterstützt und
Crosslinker, die mit den --with-sysroot .
3. Auf einem ELF-System für native Linker, wenn die -Pfad und -rpath-link Optionen waren
nicht verwendet, suchen Sie den Inhalt der Umgebungsvariablen "LD_RUN_PATH".
4. Unter SunOS, wenn die -Pfad Option wurde nicht verwendet, durchsuchen Sie alle angegebenen Verzeichnisse
Verwendung von -L Optionen.
5. Suchen Sie nach einem nativen Linker den Inhalt der Umgebungsvariablen
"LD_LIBRARY_PATH".
6. Bei einem nativen ELF-Linker sind die Verzeichnisse in "DT_RUNPATH" oder "DT_RPATH" eines freigegebenen
Bibliothek werden nach gemeinsam genutzten Bibliotheken durchsucht, die von ihr benötigt werden. Die "DT_RPATH"-Einträge sind
ignoriert, wenn "DT_RUNPATH"-Einträge vorhanden sind.
7. Die Standardverzeichnisse, normalerweise / lib und / Usr / lib.
8. Für einen nativen Linker auf einem ELF-System, wenn die Datei /etc/ld.so.conf existiert, die Liste
der in dieser Datei gefundenen Verzeichnisse.
Wenn die erforderliche Shared Library nicht gefunden wird, gibt der Linker eine Warnung aus und
weiter mit dem Link.
-geteilt
-Teilbar
Erstellen Sie eine gemeinsam genutzte Bibliothek. Dies wird derzeit nur von ELF, XCOFF und SunOS unterstützt
Plattformen. Unter SunOS erstellt der Linker automatisch eine gemeinsam genutzte Bibliothek, wenn die -e
Option wird nicht verwendet und der Link enthält undefinierte Symbole.
--sort-common
--sort-common=aufsteigend
--sort-common=absteigend
Diese Option sagt ld um die gemeinsamen Symbole nach Ausrichtung aufsteigend zu sortieren oder
in absteigender Reihenfolge, wenn sie in den entsprechenden Ausgabeabschnitten platziert werden. Das Symbol
Die berücksichtigten Ausrichtungen sind sechzehn Byte oder größer, acht Byte, vier Byte, zwei Byte und
ein Byte. Dies dient dazu, Lücken zwischen Symbolen aufgrund von Ausrichtungsbeschränkungen zu vermeiden. Wenn nein
Sortierreihenfolge angegeben, dann wird eine absteigende Reihenfolge angenommen.
--sort-section=Name
Diese Option wendet "SORT_BY_NAME" auf alle Platzhalter-Abschnittsmuster im Linker an
Skripte.
--sort-section=Ausrichtung
Diese Option wendet "SORT_BY_ALIGNMENT" auf alle Platzhalter-Abschnittsmuster in der . an
Linker-Skript.
--Split-by-file[=Größe]
Ähnlich --Split-by-reloc erstellt aber einen neuen Ausgabeabschnitt für jede Eingabedatei, wenn
Größe ist erreicht. Größe Standardmäßig ist die Größe 1 wenn nicht angegeben.
--split-by-reloc[=zählen]
Versucht, zusätzliche Abschnitte in der Ausgabedatei zu erstellen, damit kein einzelner Ausgabeabschnitt in
die Datei enthält mehr als zählen Umzüge. Dies ist nützlich, wenn Sie riesige
verschiebbare Dateien zum Herunterladen in bestimmte Echtzeit-Kernel mit dem COFF-Objekt
Datei Format; da COFF nicht mehr als 65535 Umzüge in einer einzigen darstellen kann
Sektion. Beachten Sie, dass dies nicht mit Objektdateiformaten funktioniert, die dies nicht tun
willkürliche Abschnitte unterstützen. Der Linker teilt keine einzelnen Eingabeabschnitte auf
zur Umverteilung, wenn also ein einzelner Eingabeabschnitt mehr als zählen Umzüge
ein Ausgabeabschnitt enthält so viele Verschiebungen. zählen standardmäßig auf einen Wert von
32768
--Statistiken
Berechnen und Anzeigen von Statistiken über den Betrieb des Linkers, z. B. die Ausführung
Zeit und Speicherverbrauch.
--sysroot=Verzeichnis
Verwenden Sie die Verzeichnis als Speicherort der sysroot, überschreibt den Konfigurationszeitstandard.
Diese Option wird nur von Linkern unterstützt, die mit . konfiguriert wurden --with-sysroot.
--traditionelles-format
Bei einigen Zielen ist die Ausgabe von ld unterscheidet sich in gewisser Weise von der Ausgabe einiger
vorhandener Linker. Dieser Schalter fordert ld stattdessen das traditionelle Format verwenden.
Unter SunOS beispielsweise ld kombiniert doppelte Einträge in der Symbolzeichenfolgentabelle. Dies
kann die Größe einer Ausgabedatei mit vollständigen Debugging-Informationen um über 30 Zoll reduzieren
Prozent. Leider kann das SunOS-Programm "dbx" das resultierende Programm nicht lesen
("gdb" hat keine Probleme). Die --traditionelles-format Schalter sagt ld nicht kombinieren
doppelte Einträge.
--section-start=Abteilungsname=org
Suchen Sie einen Abschnitt in der Ausgabedatei an der durch . angegebenen absoluten Adresse org. Sie können verwenden
diese Option so oft wie nötig, um mehrere Abschnitte im Befehl zu finden
Linie. org muss eine einzelne hexadezimale Ganzzahl sein; zur Kompatibilität mit anderen Linkern,
du kannst das führende weglassen 0x normalerweise mit hexadezimalen Werten verbunden. Hinweis: dort
sollte kein Leerraum dazwischen sein Abteilungsname, das Gleichheitszeichen ("="), und org.
-Tbss=org
-Tdata=org
-Ttext=org
Das gleiche wie --Abschnitt-Start, mit ".bss", ".data" oder ".text" als Abteilungsname.
-Ttext-Segment=org
Beim Erstellen einer ausführbaren ELF-Datei wird die Adresse des ersten Bytes des Textes festgelegt
Segment.
-Trodata-Segment=org
Beim Erstellen einer ausführbaren ELF-Datei oder eines gemeinsam genutzten Objekts für ein Ziel, bei dem die schreibgeschützten Daten
befindet sich in einem eigenen Segment, das vom ausführbaren Text getrennt ist, wird die Adresse von
das erste Byte des schreibgeschützten Datensegments.
-Tldata-segment=org
Beim Erstellen einer ausführbaren ELF-Datei oder eines gemeinsam genutzten Objekts für das x86-64-Medienspeichermodell
setzt die Adresse des ersten Bytes des ldata-Segments.
--unresolved-symbols=Methode
Bestimmen Sie, wie nicht aufgelöste Symbole behandelt werden. Es gibt vier mögliche Werte für
Methode:
alles ignorieren
Melden Sie keine ungelösten Symbole.
alles melden
Melden Sie alle nicht aufgelösten Symbole. Dies ist die Standardeinstellung.
Ignoriere-in-Objekt-Dateien
Melden Sie nicht aufgelöste Symbole, die in gemeinsam genutzten Bibliotheken enthalten sind, aber ignorieren Sie sie
wenn sie aus regulären Objektdateien stammen.
ignorieren-in-shared-libs
Melden Sie unaufgelöste Symbole, die aus regulären Objektdateien stammen, aber ignorieren Sie sie, wenn
sie stammen aus gemeinsam genutzten Bibliotheken. Dies kann nützlich sein, wenn Sie eine Dynamik erstellen
binär und es ist bekannt, dass alle gemeinsam genutzten Bibliotheken, auf die es verweisen sollte, referenziert werden sollen
sind in der Befehlszeile des Linkers enthalten.
Das Verhalten für Shared Libraries allein kann auch durch die
--[no-]allow-shlib-undefiniert .
Normalerweise generiert der Linker eine Fehlermeldung für jedes gemeldete nicht aufgelöste Symbol
aber die möglichkeit --warn-unresolved-symbols kann dies in eine Warnung ändern.
--dll-verbose
--verbose[=NUMBER]
Anzeige der Versionsnummer für ld und listen Sie die unterstützten Linkeremulationen auf. Anzeige
welche Eingabedateien geöffnet werden können und welche nicht. Zeigen Sie das Linker-Skript an, das von verwendet wird
der Linker. Wenn die optionale NUMBER Argument > 1, Status des Plugin-Symbols wird auch sein
angezeigt.
--Version-Skript =Versions-Skriptdatei
Geben Sie dem Linker den Namen eines Versionsskripts an. Dies wird normalerweise verwendet, wenn
Erstellen von gemeinsam genutzten Bibliotheken, um zusätzliche Informationen über die Version anzugeben
Hierarchie für die zu erstellende Bibliothek. Diese Option wird nur von ELF . vollständig unterstützt
Plattformen, die gemeinsam genutzte Bibliotheken unterstützen; sehen VERSION. Es wird teilweise unterstützt auf
PE-Plattformen, die Versionsskripte verwenden können, um die Symbolsichtbarkeit beim automatischen Export zu filtern
Modus: beliebige Symbole markiert aus einer regionalen im Versionsskript wird nicht exportiert.
--warn-common
Warnen, wenn ein gemeinsames Symbol mit einem anderen gemeinsamen Symbol oder mit einem Symbol kombiniert wird
Definition. Unix-Linker erlauben diese etwas nachlässige Praxis, aber Linker auf einigen
andere Betriebssysteme nicht. Mit dieser Option können Sie potenzielle Probleme finden
aus der Kombination globaler Symbole. Leider verwenden einige C-Bibliotheken diese Praxis, also
Sie erhalten möglicherweise einige Warnungen zu Symbolen in den Bibliotheken sowie in Ihren Programmen.
Es gibt drei Arten von globalen Symbolen, die hier durch C-Beispiele veranschaulicht werden:
int i = 1;
Eine Definition, die in den initialisierten Datenabschnitt der Ausgabedatei eingefügt wird.
extern int i;
Eine undefinierte Referenz, die keinen Speicherplatz zuweist. Es muss entweder ein
Definition oder ein allgemeines Symbol für die Variable irgendwo.
int i;
Ein gemeinsames Symbol. Wenn es nur (ein oder mehrere) gemeinsame Symbole für eine Variable gibt,
es geht in den nicht initialisierten Datenbereich der Ausgabedatei. Der Linker wird zusammengeführt
mehrere gemeinsame Symbole für dieselbe Variable zu einem einzigen Symbol. Wenn sie sind
von verschiedenen Größen wählt es die größte Größe aus. Der Linker wird zu einem gemeinsamen Symbol
in eine Deklaration, wenn es eine Definition derselben Variablen gibt.
Die --warn-common Option kann fünf Arten von Warnungen erzeugen. Jede Warnung besteht aus
ein Linienpaar: die erste beschreibt das gerade angetroffene Symbol und die zweite
beschreibt das zuvor angetroffene Symbol mit dem gleichen Namen. Einer oder beide von beiden
Symbole werden ein gemeinsames Symbol sein.
1. Ein gemeinsames Symbol in eine Referenz verwandeln, weil es bereits eine Definition gibt
für das Symbol.
( ): Warnung: gemeinsam von ` '
per Definition überschrieben
( ): Warnung: hier definiert
2. Aus einem gemeinsamen Symbol eine Referenz machen, weil eine spätere Definition für das
Symbol begegnet. Dies ist das gleiche wie im vorherigen Fall, außer dass die
Symbole werden in einer anderen Reihenfolge angetroffen.
( ): Warnung: Definition von ` '
Übergeordnetes gemeinsames
( ): Warnung: Common ist hier
3. Zusammenführen eines gemeinsamen Symbols mit einem vorherigen gemeinsamen Symbol gleicher Größe.
( ): Warnung: mehrfach häufig
von ` '
( ): Warnung: vorherige gemeinsame ist hier
4. Zusammenführen eines gemeinsamen Symbols mit einem vorherigen größeren gemeinsamen Symbol.
( ): Warnung: gemeinsam von ` '
überschrieben durch größere gemeinsame
( ): Warnung: größeres Common ist hier
5. Zusammenführen eines gemeinsamen Symbols mit einem vorherigen kleineren gemeinsamen Symbol. Das ist das gleiche
wie im vorherigen Fall, außer dass die Symbole in einem anderen Fall angetroffen werden
Ordnung.
( ): Warnung: gemeinsam von ` '
Vorrang vor kleineren gemeinsamen
( ): Warnung: kleineres Common ist hier
--warn-Konstruktoren
Warnen, wenn globale Konstruktoren verwendet werden. Dies ist nur für einige Objektdateien sinnvoll
Formate. Bei Formaten wie COFF oder ELF kann der Linker die Verwendung von global . nicht erkennen
Konstrukteure.
--warn-multiple-gp
Warnen, wenn in der Ausgabedatei mehrere globale Zeigerwerte erforderlich sind. Das ist nur
sinnvoll für bestimmte Prozessoren, wie den Alpha. Insbesondere einige Prozessoren
Legen Sie großwertige Konstanten in einen speziellen Abschnitt. Ein spezielles Register (das globale
Zeiger) zeigt in die Mitte dieses Abschnitts, damit Konstanten geladen werden können
effizient über einen relativen Adressierungsmodus des Basisregisters. Da der Offset in Basis-
Der relative Registermodus ist fest und relativ klein (zB 16 Bit), dies begrenzt die
maximale Größe des konstanten Pools. Daher ist es in großen Programmen oft notwendig,
Verwenden Sie mehrere globale Zeigerwerte, um alle möglichen ansprechen zu können
Konstanten. Diese Option bewirkt, dass in diesem Fall eine Warnung ausgegeben wird.
--einmal warnen
Nur einmal für jedes undefinierte Symbol warnen, nicht einmal pro Modul, das sich auf . bezieht
es.
--warn-section-align
Warnen, wenn sich die Adresse eines Ausgabeabschnitts aufgrund der Ausrichtung ändert. Typischerweise
die Ausrichtung wird durch eine Eingabesektion festgelegt. Die Adresse wird nur geändert, wenn sie
nicht explizit angegeben; das heißt, wenn der Befehl "SECTIONS" keinen Start angibt
Adresse für den Abschnitt.
--warn-shared-textrel
Warnen, wenn der Linker einem gemeinsam genutzten Objekt ein DT_TEXTREL hinzufügt.
--warn-alternate-em
Warnen, wenn ein Objekt über einen alternativen ELF-Maschinencode verfügt.
--warn-unresolved-symbols
Wenn der Linker ein nicht aufgelöstes Symbol meldet (siehe Option
--unaufgelöste-Symbole) wird normalerweise ein Fehler generiert. Diese Option macht es
stattdessen eine Warnung generieren.
--error-unresolved-symbols
Dadurch wird das Standardverhalten des Linkers wiederhergestellt, bei der Berichterstellung Fehler zu generieren
ungelöste Symbole.
- Ganzes Archiv
Für jedes Archiv, das in der Befehlszeile nach dem - Ganzes Archiv Option,
nehmen Sie jede Objektdatei im Archiv in den Link auf, anstatt die
Archiv für die benötigten Objektdateien. Dies wird normalerweise verwendet, um eine Archivdatei umzuwandeln
in eine Shared Library, wodurch jedes Objekt in die resultierende Shared-Library aufgenommen wird
Bücherei. Diese Option kann mehrmals verwendet werden.
Zwei Hinweise zur Verwendung dieser Option von gcc: Erstens kennt gcc diese Option nicht,
also musst du benutzen -Wl,-ganzes-archiv. Zweitens, vergessen Sie nicht zu verwenden
-Wl,-kein-ganzes-Archiv nach Ihrer Archivliste, da gcc eine eigene Liste hinzufügt
von Archiven zu Ihrem Link und Sie möchten möglicherweise nicht, dass sich dieses Flag auch auf diese auswirkt.
--wrap=Symbol
Verwenden Sie eine Wrapper-Funktion für Symbol. Jeder undefinierte Verweis auf Symbol wird gelöst
einpacken_Symbol". Jeder undefinierte Verweis auf "__real_Symbol" wird gelöst zu
Symbol.
Dies kann verwendet werden, um einen Wrapper für eine Systemfunktion bereitzustellen. Die Wrapper-Funktion
sollte "__wrap_" heißenSymbol". Wenn es die Systemfunktion aufrufen möchte, sollte es
Anruf "__real_Symbol".
Hier ist ein triviales Beispiel:
nichtig *
__wrap_malloc (Größe_t c)
{
printf ("malloc aufgerufen mit %zu\n", c);
__real_malloc zurückgeben (c);
}
Wenn Sie anderen Code mit dieser Datei verknüpfen mit --wickeln malloc, dann alle Anrufe an "malloc"
ruft stattdessen die Funktion "__wrap_malloc" auf. Der Aufruf an "__real_malloc" in
"__wrap_malloc" ruft die echte "malloc"-Funktion auf.
Möglicherweise möchten Sie auch eine "__real_malloc"-Funktion bereitstellen, damit Links ohne die
--wickeln Option wird gelingen. Wenn Sie dies tun, sollten Sie die Definition von
"__real_malloc" in derselben Datei wie "__wrap_malloc"; Wenn Sie dies tun, kann der Assembler
den Aufruf auflösen, bevor der Linker die Möglichkeit hat, ihn in "malloc" umzuschließen.
--eh-frame-hdr
Fordern Sie die Erstellung des Abschnitts ".eh_frame_hdr" und des ELF-Segmentheaders "PT_GNU_EH_FRAME" an.
--no-ld-generated-unwind-info
Fordern Sie die Erstellung von ".eh_frame"-Abwicklungsinformationen für durch Linker generierte Codeabschnitte wie . an
PLT. Diese Option ist standardmäßig aktiviert, wenn vom Linker generierte Abwicklungsinformationen unterstützt werden.
--eable-new-dtags
--disable-new-dtags
Dieser Linker kann die neuen dynamischen Tags in ELF erstellen. Aber die älteren ELF-Systeme können dies nicht tun
verstehe sie. Wenn Sie angeben --eable-new-dtags, werden die neuen dynamischen Tags
nach Bedarf erstellt und ältere dynamische Tags werden weggelassen. Wenn Sie angeben
--disable-new-dtags, werden keine neuen dynamischen Tags erstellt. Standardmäßig ist die neue Dynamik
Tags werden nicht erstellt. Beachten Sie, dass diese Optionen nur für ELF-Systeme verfügbar sind.
--hash-size=Anzahl
Legen Sie die Standardgröße der Hash-Tabellen des Linkers auf eine Primzahl nahe fest Anzahl.
Durch Erhöhen dieses Wertes kann die Zeit verkürzt werden, die der Linker benötigt, um seine
Aufgaben, auf Kosten der Erhöhung der Speicheranforderungen des Linkers. Ähnlich
eine Verringerung dieses Wertes kann den Speicherbedarf auf Kosten der Geschwindigkeit verringern.
--hash-style=Stil
Legen Sie den Typ der Hash-Tabelle(n) des Linkers fest. Stil kann entweder "sysv" für klassisches ELF sein
".hash"-Abschnitt, "gnu" für neuen GNU-Stil ".gnu.hash"-Abschnitt oder "beide" für beide
klassische ELF ".hash" und neue GNU ".gnu.hash" Hashtabellen. Der Standardwert ist "sysv".
--compress-debug-sections=keine
--compress-debug-sections=zlib
- Komfort-Debug-Sektionen = Zlib-GNU
--compress-debug-sections=zlib-gabi
Auf ELF-Plattformen steuern diese Optionen, wie DWARF-Debug-Abschnitte mithilfe von . komprimiert werden
zlib. --compress-debug-sections=keine komprimiert keine DWARF-Debug-Abschnitte.
- Komfort-Debug-Sektionen = Zlib-GNU komprimiert DWARF-Debug-Abschnitte und benennt Debug um
Abschnittsnamen für den Anfang .zdebug statt .debuggen. --compress-debug-sections=zlib
und --compress-debug-sections=zlib-gabi komprimieren Sie DWARF-Debug-Abschnitte mit
SHF_COMPRESSED vom ELF-ABI. Das Standardverhalten variiert je nach
beteiligtes Ziel und die Konfigurationsoptionen, die zum Erstellen der Toolchain verwendet werden. Der Standard
kann bestimmt werden, indem die Ausgabe des Linkers untersucht wird --help .
--Reduzieren-Speicher-Overheads
Diese Option reduziert den Speicherbedarf zur ld-Laufzeit auf Kosten der Verknüpfung
Geschwindigkeit. Dies wurde eingeführt, um den alten O(n^2)-Algorithmus für die Linkmap-Datei auszuwählen
Generation statt des neuen O(n)-Algorithmus, der etwa 40% mehr Speicher für
Symbolspeicherung.
Ein weiterer Effekt des Schalters besteht darin, die Standardgröße der Hashtabelle auf 1021 zu setzen, was
spart erneut Speicher auf Kosten der Verlängerung der Laufzeit des Linkers. Das ist nicht fertig
aber wenn die --Hash-Größe Schalter verwendet wurde.
Die --Reduzieren-Speicher-Overheads Der Schalter kann auch verwendet werden, um andere Kompromisse zu ermöglichen
zukünftige Versionen des Linkers.
--build-id
-build-id =Stil
Fordern Sie die Erstellung eines ELF-Notizabschnitts ".note.gnu.build-id" oder eines ".buildid" COFF . an
Sektion. Der Inhalt der Notiz sind eindeutige Bits, die diese verknüpfte Datei identifizieren.
Stil kann "uuid" sein, um 128 zufällige Bits zu verwenden, "sha1", um einen 160-Bit-SHA1-Hash auf dem zu verwenden
normative Teile des Ausgabeinhalts, "md5", um einen 128-Bit-MD5-Hash auf dem
normative Teile des Ausgabeinhalts oder "0xHexstring" eine ausgewählte Bitfolge verwenden
angegeben als gerade Anzahl hexadezimaler Ziffern ("-" und ":" Zeichen zwischen
Ziffernpaare werden ignoriert). Wenn Stil weggelassen wird, wird "sha1" verwendet.
Die Stile "md5" und "sha1" erzeugen einen Bezeichner, der in einem immer gleich ist
identische Ausgabedatei, ist jedoch unter allen nicht identischen Ausgabedateien eindeutig. es ist
nicht als Prüfsumme für den Inhalt der Datei gedacht. Eine verknüpfte Datei kann
später von anderen Tools geändert werden, aber die Build-ID-Bitfolge, die das Original identifiziert
verknüpfte Datei ändert sich nicht.
Übergeben von "keiner" für Stil deaktiviert die Einstellung von allen "--build-id"-Optionen früher
die Befehlszeile.
Der i386 PE-Linker unterstützt die -geteilt Option, die bewirkt, dass die Ausgabe a . ist
Dynamisch verknüpfte Bibliothek (DLL) anstelle einer normalen ausführbaren Datei. Sie sollten die benennen
geben Sie "*.dll" aus, wenn Sie diese Option verwenden. Darüber hinaus unterstützt der Linker vollständig die
Standard-"*.def"-Dateien, die in der Linker-Befehlszeile wie ein Objekt angegeben werden können
Datei (tatsächlich sollte sie Archiven vorangehen, aus denen Symbole exportiert werden, um sicherzustellen, dass sie
eingebunden, genau wie eine normale Objektdatei).
Zusätzlich zu den Optionen, die allen Zielen gemeinsam sind, unterstützt der i386 PE-Linker zusätzliche
Befehlszeilenoptionen, die für das i386 PE-Ziel spezifisch sind. Optionen, die Werte annehmen
können von ihren Werten entweder durch ein Leerzeichen oder ein Gleichheitszeichen getrennt werden.
--add-stdcall-alias
Falls angegeben, Symbole mit einem stdcall-Suffix (@nn) werden so wie sie sind und auch mit dem exportierten
Suffix abgezogen. [Diese Option ist spezifisch für den auf i386 PE gerichteten Port des Linkers]
--base-Datei Datei
Verwenden Sie die Datei als Name einer Datei, in der die Basisadressen aller
Umzüge für die Generierung von DLLs mit dlltool. [Dies ist ein i386 PE-spezifisch
Möglichkeit]
--dll
Erstellen Sie eine DLL anstelle einer regulären ausführbaren Datei. Sie können auch verwenden -geteilt oder spezifizieren Sie a
"BIBLIOTHEK" in einer bestimmten ".def"-Datei. [Diese Option ist spezifisch für das i386 PE-Zielgerät
Port des Linkers]
--enable-long-section-names
--disable-long-section-names
Die PE-Varianten des COFF-Objektformats fügen eine Erweiterung hinzu, die die Verwendung von
Abschnittsnamen länger als acht Zeichen, die normale Grenze für COFF. Standardmäßig,
diese Namen sind nur in Objektdateien erlaubt, da vollständig verlinkte ausführbare Bilder dies nicht tun
tragen die COFF-String-Tabelle, die erforderlich ist, um die längeren Namen zu unterstützen. Als GNU-Erweiterung,
es ist möglich, deren Verwendung auch in ausführbaren Images zuzulassen oder (wahrscheinlich
sinnlos!) verbieten Sie es in Objektdateien, indem Sie diese beiden Optionen verwenden. Ausführbar
Bilder, die mit diesen langen Abschnittsnamen generiert wurden, sind leicht vom Standard abweichend und tragen als
Sie erstellen eine String-Tabelle und können verwirrende Ausgaben erzeugen, wenn sie mit Nicht-GNU untersucht werden
PE-fähige Tools wie Dateibetrachter und Dumper. GDB setzt jedoch auf die Verwendung von
PE lange Abschnittsnamen, um Dwarf-2-Debug-Informationsabschnitte in einer ausführbaren Datei zu finden
image zur Laufzeit, und wenn also keine Option in der Befehlszeile angegeben ist, ld werden wir
lange Abschnittsnamen aktivieren, das standardmäßige und technisch korrekte Verhalten überschreiben,
wenn es beim Verknüpfen eines ausführbaren Images das Vorhandensein von Debug-Informationen feststellt und
Symbole nicht entfernen. [Diese Option gilt für alle auf PE gerichteten Ports des Linkers]
--enable-stdcall-fixup
--disable-stdcall-fixup
Wenn der Link ein Symbol findet, das er nicht auflösen kann, wird versucht, "unscharf" zu machen
Verlinkung", indem Sie nach einem anderen definierten Symbol suchen, das sich nur im Format der
Symbolname (cdecl vs stdcall) und löst dieses Symbol auf, indem es mit der Übereinstimmung verknüpft wird.
Zum Beispiel könnte das undefinierte Symbol "_foo" mit der Funktion "_foo@12" verknüpft sein, oder
das undefinierte Symbol "_bar@16" könnte mit der Funktion "_bar" verknüpft sein. Wenn das
linker dies tut, gibt er eine Warnung aus, da er normalerweise nicht hätte verknüpfen können,
aber manchmal benötigen Importbibliotheken, die aus DLLs von Drittanbietern generiert wurden, diese Funktion
verwendbar zu sein. Wenn Sie angeben --enable-stdcall-fixup, diese Funktion ist vollständig aktiviert
und Warnungen werden nicht gedruckt. Wenn Sie angeben --disable-stdcall-fixup, diese Funktion ist
deaktiviert und solche Nichtübereinstimmungen werden als Fehler betrachtet. [Diese Option ist spezifisch für
der auf i386 PE gerichtete Port des Linkers]
--führender-unterstrich
--kein führender Unterstrich
Bei den meisten Zielen ist das Standardsymbol-Präfix ein Unterstrich und wird in Ziels . definiert
Bezeichnung. Mit dieser Option ist es möglich den Standardunterstrich zu deaktivieren/aktivieren
Symbol-Präfix.
--export-alle-symbole
Wenn angegeben, werden alle globalen Symbole in den Objekten, die zum Erstellen einer DLL verwendet werden, exportiert von
die DLL. Beachten Sie, dass dies die Standardeinstellung ist, wenn sonst keine exportiert würden
Symbole. Wenn Symbole explizit über DEF-Dateien oder implizit exportiert werden
über Funktionsattribute wird standardmäßig nichts anderes exportiert, es sei denn, diese Option ist
gegeben ist. Beachten Sie, dass die Symbole "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12" und "impure_ptr" werden nicht automatisch exportiert. Ebenfalls,
Symbole, die aus anderen DLLs importiert wurden, werden nicht erneut exportiert, ebenso keine Symbole, die
das interne Layout der DLL, z. B. solche, die mit "_head_" beginnen oder mit enden
"_iname". Außerdem keine Symbole aus "libgcc", "libstd++", "libmingw32" oder
"crtX.o" wird exportiert. Symbole, deren Namen mit "__rtti_" oder "__builtin_" beginnen
wird nicht exportiert, um bei C++-DLLs zu helfen. Schließlich gibt es eine umfangreiche Liste von
cygwin-private Symbole, die nicht exportiert werden (dies gilt natürlich beim Bauen)
DLLs für Cygwin-Ziele). Diese Cygwin-Ausschlüsse sind: "_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" und "environ". [Diese Option ist spezifisch für das i386 PE-Zielgerät
Port des Linkers]
--Ausschlusssymbole Symbol,Symbol, ...
Gibt eine Liste von Symbolen an, die nicht automatisch exportiert werden sollen. Das Symbol
Namen können durch Kommas oder Doppelpunkte getrennt werden. [Diese Option ist spezifisch für den i386 PE
Zielport des Linkers]
--Alle-Symbole ausschließen
Gibt an, dass keine Symbole automatisch exportiert werden sollen. [Diese Option ist spezifisch für
der auf i386 PE gerichtete Port des Linkers]
--file-alignment
Geben Sie die Dateiausrichtung an. Abschnitte in der Datei beginnen immer an Datei-Offsets
die ein Vielfaches dieser Zahl sind. Der Standardwert ist 512. [Diese Option ist spezifisch
zum i386 PE-Zielport des Linkers]
--Haufen sowie das Hotel
--Haufen sowie das Hotel ,verpflichten
Geben Sie die Anzahl der zu reservierenden (und optional zu übertragenden) Speicherbytes an, die als verwendet werden sollen
Haufen für dieses Programm. Der Standardwert ist 1 MB reserviert, 4 KB festgeschrieben. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--image-base Wert
Verwenden Sie die Wert als Basisadresse Ihres Programms oder Ihrer DLL. Dies ist der niedrigste Speicher
Speicherort, der verwendet wird, wenn Ihr Programm oder Ihre DLL geladen wird. Um die Notwendigkeit zu reduzieren
Verschieben und verbessern Sie die Leistung Ihrer DLLs, jede sollte eine eindeutige Basisadresse haben
und keine anderen DLLs überlappen. Der Standardwert ist 0x400000 für ausführbare Dateien und
0x10000000 für DLLs. [Diese Option ist spezifisch für den i386 PE-Zielport des
Linker]
--kill-at
Falls angegeben, werden die stdcall-Suffixe (@nn) werden von Symbolen entfernt, bevor sie es sind
exportiert. [Diese Option ist spezifisch für den auf i386 PE gerichteten Port des Linkers]
--große-adress-bewusst
Falls vorhanden, wird das entsprechende Bit im Feld "Eigenschaften" des COFF-Headers gesetzt
um anzugeben, dass diese ausführbare Datei virtuelle Adressen von mehr als 2 Gigabyte unterstützt.
Dies sollte in Verbindung mit /3GB oder /USERVA= . verwendet werdenWert Megabyte schalten ein
den Abschnitt "[Betriebssysteme]" der BOOT.INI. Andernfalls hat dieses Bit keine Wirkung.
[Diese Option ist spezifisch für PE-gerichtete Ports des Linkers]
-Mit dem Disable-Large-Address-Awesare
Kehrt den Effekt eines vorherigen zurück --große-adress-bewusst Möglichkeit. Dies ist nützlich, wenn
--große-adress-bewusst wird immer vom Compiler-Treiber (zB Cygwin gcc) gesetzt und die
ausführbare Datei unterstützt keine virtuellen Adressen von mehr als 2 Gigabyte. [Diese Option
ist spezifisch für PE-gerichtete Ports des Linkers]
--MAJOR-Image-Version Wert
Legt die Major-Nummer der "Image-Version" fest. Der Standardwert ist 1. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--major-os-version Wert
Legt die Major-Nummer der "OS-Version" fest. Der Standardwert ist 4. [Diese Option ist spezifisch
zum i386 PE-Zielport des Linkers]
--major-subsystem-version Wert
Setzt die Major-Nummer der "Subsystem-Version". Der Standardwert ist 4. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--minor-image-version Wert
Legt die Minor-Nummer der "Image-Version" fest. Der Standardwert ist 0. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--minor-os-version Wert
Legt die Minor-Nummer der "OS-Version" fest. Der Standardwert ist 0. [Diese Option ist spezifisch
zum i386 PE-Zielport des Linkers]
--minor-subsystem-version Wert
Setzt die Minor-Nummer der "Subsystem-Version". Der Standardwert ist 0. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--output-def Datei
Der Linker erstellt die Datei Datei die eine DEF-Datei enthält, die entspricht
die DLL, die der Linker generiert. Diese DEF-Datei (die "*.def" heißen sollte) kann
verwendet werden, um eine Importbibliothek mit "dlltool" zu erstellen, oder kann als Referenz auf . verwendet werden
automatisch oder implizit exportierte Symbole. [Diese Option ist spezifisch für den i386 PE
Zielport des Linkers]
--out-implib Datei
Der Linker erstellt die Datei Datei die eine Import-Bibliothek enthält, die entspricht
die DLL, die der Linker generiert. Diese Importbibliothek (die "*.dll.a" heißen sollte oder
"*.a" kann verwendet werden, um Clients mit der generierten DLL zu verknüpfen; dieses Verhalten macht es aus
möglich, einen separaten Erstellungsschritt für die Importbibliothek "dlltool" zu überspringen. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--enable-auto-image-base
--enable-auto-image-base=Wert
Wählen Sie automatisch die Image-Basis für DLLs, optional beginnend mit base Wert,
es sei denn, man wird mit dem Argument "--image-base" angegeben. Durch die Verwendung eines erzeugten Hashs
aus dem DLL-Namen, um eindeutige Image-Basen für jede DLL, In-Memory-Kollisionen und
Verlagerungen, die die Programmausführung verzögern können, werden vermieden. [Diese Option ist spezifisch
zum i386 PE-Zielport des Linkers]
--disable-auto-image-base
Generieren Sie nicht automatisch eine eindeutige Bilddatenbank. Wenn kein Benutzer angegeben ist
image base ("--image-base") verwenden Sie dann den Plattformstandard. [Diese Option ist spezifisch
zum i386 PE-Zielport des Linkers]
--dll-Suchpräfix Schnur
Beim dynamischen Verknüpfen mit einer DLL ohne Importbibliothek suchen Sie nach
" .dll" statt "lib ." .dll". Dieses Verhalten ermöglicht
einfache Unterscheidung zwischen DLLs, die für die verschiedenen "Subplattformen" erstellt wurden: native, cygwin,
uwin, pw usw. Cygwin-DLLs verwenden beispielsweise normalerweise "--dll-search-prefix=cyg".
[Diese Option ist spezifisch für den i386 PE-Zielport des Linkers]
--enable-auto-import
Führen Sie eine ausgeklügelte Verknüpfung von "_symbol" mit "__imp__symbol" für DATA-Importe aus DLLs durch,
und erstellen Sie die notwendigen Thunking-Symbole beim Erstellen der Importbibliotheken mit
diese DATEN-Exporte. Hinweis: Die Verwendung der Erweiterung 'Auto-Import' führt dazu, dass der Text
Abschnitt der Bilddatei beschreibbar gemacht werden. Dies entspricht nicht dem PE-COFF
von Microsoft veröffentlichte Formatspezifikation.
Hinweis - Die Verwendung der Erweiterung 'Auto-Import' führt auch dazu, dass schreibgeschützte Daten
normalerweise in den .rdata-Abschnitt platziert werden in den .data-Abschnitt platziert werden
stattdessen. Dies ist, um ein Problem mit consts zu umgehen, das beschrieben wird
hier: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
Die Verwendung von "Auto-Import" funktioniert im Allgemeinen "einfach" - aber manchmal sehen Sie dies möglicherweise
Nachricht:
"variable ' ' kann nicht automatisch importiert werden. Bitte lesen Sie die Dokumentation für ld's
"--enable-auto-import" für Details."
Diese Meldung tritt auf, wenn ein (Unter-)Ausdruck auf eine Adresse zugreift, die letztendlich von
die Summe zweier Konstanten (Win32-Importtabellen erlauben nur eine). Fälle, in denen dies
auftreten können, sind Zugriffe auf Memberfelder von Strukturvariablen, die aus einer DLL importiert wurden,
sowie die Verwendung eines konstanten Index in eine aus einer DLL importierte Array-Variable. Irgendein
Multiword-Variable (Arrays, Structs, Long Long usw.) können diesen Fehlerzustand auslösen.
Unabhängig vom genauen Datentyp der fehlerhaften exportierten Variablen wird ld jedoch
immer erkennen, die Warnung ausgeben und beenden.
Es gibt mehrere Möglichkeiten, dieses Problem zu lösen, unabhängig vom Datentyp der
exportierte Variable:
Eine Möglichkeit besteht darin, den Schalter --enable-runtime-pseudo-reloc zu verwenden. Damit bleibt die Aufgabe
Referenzen in Ihrem Clientcode für die Laufzeitumgebung anpassen, damit diese Methode funktioniert
nur wenn die Laufzeitumgebung diese Funktion unterstützt.
Eine zweite Lösung besteht darin, eine der 'Konstanten' zu zwingen, eine Variable zu sein, d.h.
zur Kompilierzeit unbekannt und nicht optimierbar. Für Arrays gibt es zwei Möglichkeiten:
a) machen Sie den Indexee (die Adresse des Arrays) zu einer Variablen, oder b) machen Sie den 'konstanten' Index
eine Variable. Daher:
extern Typ extern_array[];
extern_array[1] -->
{ flüchtiger Typ *t=extern_array; t[1] }
or
extern Typ extern_array[];
extern_array[1] -->
{ flüchtig int t = 1; extern_array[t] }
Für Strukturen (und die meisten anderen Mehrwort-Datentypen) besteht die einzige Möglichkeit darin, die
struct sich selbst (oder die long long oder die ...) Variable:
externe Struktur s externe_Struktur;
extern_struct.field -->
{ flüchtige Struktur s *t=&extern_struct; t->Feld }
or
extern lang lang extern_ll;
extern_ll -->
{ volatile long long * local_ll=&extern_ll; *local_ll}
Eine dritte Methode, mit dieser Schwierigkeit umzugehen, besteht darin, den 'Auto-Import' für die
anstößiges Symbol und markieren Sie es mit "__declspec(dllimport)". In der Praxis ist das jedoch
erfordert die Verwendung von #defines zur Kompilierzeit, um anzugeben, ob Sie eine DLL erstellen.
Erstellen von Clientcode, der mit der DLL verknüpft wird, oder lediglich das Erstellen/Verknüpfen mit einer statischen
Bücherei. Bei der Wahl zwischen den verschiedenen Methoden zur Auflösung des "direkten"
Adresse mit konstantem Offset' Problem, sollten Sie die typische Verwendung in der realen Welt berücksichtigen:
Original:
--foo.h
extern int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}
Lösung 1:
--foo.h
extern int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
/* Diese Problemumgehung gilt für win32 und cygwin; nicht "optimieren" */
flüchtig int *parr = arr;
printf("%d\n",parr[1]);
}
Lösung 2:
--foo.h
/* Hinweis: automatischer Export wird vorausgesetzt (kein __declspec(dllexport)) */
#if (definiert(_WIN32) || definiert(__CYGWIN__)) && \
!(definiert(FOO_BUILD_DLL) || definiert(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]);
}
Eine vierte Möglichkeit, dieses Problem zu vermeiden, besteht darin, Ihre Bibliothek neu zu codieren, um eine funktionale
Schnittstelle statt einer Datenschnittstelle für die störenden Variablen (zB set_foo() und
get_foo () Accessor-Funktionen). [Diese Option ist spezifisch für den i386 PE-Zielport
des Linkers]
--disable-auto-import
Versuchen Sie nicht, "_symbol" mit "__imp__symbol" für DATA zu verknüpfen
Importe aus DLLs. [Diese Option ist spezifisch für den i386 PE-Zielport des
Linker]
--enable-runtime-pseudo-reloc
Wenn Ihr Code Ausdrücke enthält, die im Abschnitt --enable-auto-import beschrieben sind, d. h.
DATA-Importe aus DLL mit einem Offset ungleich Null, dieser Schalter erstellt einen Vektor von
'Laufzeit-Pseudo-Verlagerungen', die von der Laufzeitumgebung zur Anpassung verwendet werden können
Verweise auf solche Daten in Ihrem Client-Code. [Diese Option ist spezifisch für den i386 PE
Zielport des Linkers]
--disable-runtime-pseudo-reloc
Erstellen Sie keine Pseudoverlagerungen für DATEN-Importe ungleich Null aus DLLs. [Dies
Option ist spezifisch für den auf i386 PE gerichteten Port des Linkers]
--eable-extra-pe-debug
Zeigen Sie zusätzliche Debug-Informationen im Zusammenhang mit Auto-Import-Symbolthunking an. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--Abschnittsausrichtung
Legt die Schnittausrichtung fest. Abschnitte im Speicher beginnen immer an Adressen, die
sind ein Vielfaches dieser Zahl. Standardmäßig 0x1000. [Diese Option ist spezifisch für die
i386 PE gezielter Port des Linkers]
--Stapel sowie das Hotel
--Stapel sowie das Hotel ,verpflichten
Geben Sie die Anzahl der zu reservierenden (und optional zu übertragenden) Speicherbytes an, die als verwendet werden sollen
Stapel für dieses Programm. Der Standardwert ist 2 MB reserviert, 4 KB festgeschrieben. [Diese Option ist
spezifisch für den auf i386 PE gerichteten Port des Linkers]
--Teilsystem welche
--Teilsystem welche:Dur
--Teilsystem welche:Dur.Moll
Gibt das Subsystem an, unter dem Ihr Programm ausgeführt wird. Die gesetzlichen Werte für
welche sind "native", "windows", "console", "posix" und "xbox". Sie können optional einstellen
auch die Subsystemversion. Numerische Werte werden auch akzeptiert für welche. [Diese Option
ist spezifisch für den auf i386 PE gerichteten Port des Linkers]
Die folgenden Optionen setzen Flags im Feld "DllCharacteristics" der PE-Datei
header: [Diese Optionen sind spezifisch für PE-gerichtete Ports des Linkers]
--high-entropy-va
Das Bild ist mit der 64-Bit-Adressraum-Layout-Randomisierung (ASLR) kompatibel.
--dynamische Basis
Die Image-Basisadresse kann unter Verwendung der Adressraum-Layout-Randomisierung verschoben werden
(ASLR). Diese Funktion wurde mit MS Windows Vista für i386 PE-Ziele eingeführt.
--forceinteg
Codeintegritätsprüfungen werden erzwungen.
--nxkompat
Das Image ist mit der Datenausführungsverhinderung kompatibel. Diese Funktion war
eingeführt mit MS Windows XP SP2 für i386 PE-Ziele.
--keine-isolierung
Obwohl das Bild Isolation versteht, isolieren Sie das Bild nicht.
--nein-seh
Das Bild verwendet kein SEH. Von diesem Image darf kein SE-Handler aufgerufen werden.
--no-bind
Dieses Bild nicht binden.
--wdmdriver
Der Treiber verwendet das MS Windows-Treibermodell.
--tsaware
Das Bild ist Terminalserver-fähig.
--insert-timestamp
--no-insert-timestamp
Fügen Sie einen echten Zeitstempel in das Bild ein. Dies ist das Standardverhalten, da es übereinstimmt
Legacy-Code und bedeutet, dass das Image mit anderen, proprietären Tools funktioniert. Die
Das Problem mit dieser Standardeinstellung ist, dass dies zu leicht unterschiedlichen Bildern führt
produziert jedes Mal, wenn die gleichen Quellen verlinkt werden. Die Option --no-insert-timestamp können.
verwendet werden, um einen Nullwert für den Zeitstempel einzufügen, um sicherzustellen, dass Binärdateien erzeugt werden
aus identischen Quellen wird identisch vergleichen.
Das C6X uClinux-Target verwendet ein binäres Format namens DSBT, um gemeinsam genutzte Bibliotheken zu unterstützen. Jeder
Die gemeinsam genutzte Bibliothek im System muss einen eindeutigen Index haben; alle ausführbaren Dateien verwenden einen Index von
0.
--dsbt-Größe Größe
Diese Option legt die Anzahl der Einträge im DSBT der aktuellen ausführbaren oder freigegebenen Datei fest
Bibliothek zu Größe. Standardmäßig wird eine Tabelle mit 64 Einträgen erstellt.
--dsbt-index Index
Diese Option setzt den DSBT-Index der aktuellen ausführbaren oder gemeinsam genutzten Bibliothek auf Index.
Der Standardwert ist 0, was zum Generieren ausführbarer Dateien geeignet ist. Wenn ein geteiltes
Bibliothek wird mit einem DSBT-Index von 0 generiert, die "R_C6000_DSBT_INDEX"-Relocs sind
in die Ausgabedatei kopiert.
Die --no-merge-exidx-Einträge Schalter deaktiviert das Zusammenführen benachbarter Exidx-Einträge in
Rahmenabwickelinfo.
Die Linker 68HC11 und 68HC12 unterstützen spezifische Optionen zur Steuerung der Speicherbank
Schaltmapping und Trampolin-Code-Generierung.
--kein Trampolin
Diese Option deaktiviert die Trampolinerzeugung. Standardmäßig ist ein Trampolin
für jede far-Funktion generiert, die mit einer "jsr"-Anweisung aufgerufen wird (dieses
passiert, wenn ein Zeiger auf eine Fernfunktion genommen wird).
--Bankfenster Name
Diese Option zeigt dem Linker den Namen des Speicherbereichs im SPEICHER
Spezifikation, die das Speicherbankfenster beschreibt. Die Definition einer solchen Region ist
dann vom Linker verwendet, um Paging und Adressen innerhalb des Speicherfensters zu berechnen.
Die folgenden Optionen werden unterstützt, um die Handhabung der GOT-Generierung beim Verknüpfen für . zu steuern
68K Ziele.
--got=tippe
Diese Option teilt dem Linker mit, welches GOT-Generierungsschema verwendet werden soll. tippe sollte einer sein
of Single, Negativ, Multigot or Ziel. Weitere Informationen finden Sie im Info-Eintrag
für ld.
Die folgenden Optionen werden unterstützt, um die Generierung von microMIPS-Befehlen zu steuern, wenn
Verknüpfung für MIPS-Ziele.
--insn32
--no-insn32
Diese Optionen steuern die Auswahl der microMIPS-Anweisungen, die in Code verwendet werden, der von . generiert wird
der Linker, wie der in den PLT- oder Lazy-Bindungs-Stubs, oder in Relaxation. Wenn
--insn32 verwendet wird, verwendet der Linker nur 32-Bit-Befehlscodierungen. Standardmäßig
oder wenn --no-insn32 verwendet wird, werden alle Befehlskodierungen verwendet, einschließlich 16-Bit-Kodierungen
wo möglich.
Sie können das Verhalten von ändern ld mit den Umgebungsvariablen "GNUTARGET",
"LDEMULATION" und "COLLECT_NO_DEMANGLE".
"GNUTARGET" bestimmt das Objektformat der Eingabedatei, wenn Sie es nicht verwenden -b (oder sein Synonym
--Format). Sein Wert sollte einer der BFD-Namen für ein Eingabeformat sein. Wenn es keine gibt
"GNUTARGET" in der Umgebung, ld verwendet das natürliche Format des Ziels. Wenn "GNUTARGET"
auf "Standard" gesetzt ist, versucht BFD, das Eingabeformat zu erkennen, indem es die Binärdatei untersucht
Eingabedateien; Diese Methode ist oft erfolgreich, aber es gibt potenzielle Mehrdeutigkeiten, da es
ist keine Methode, um sicherzustellen, dass die magische Zahl, die verwendet wird, um Objektdateiformate anzugeben,
einzigartig. Die Konfigurationsprozedur für BFD auf jedem System stellt jedoch die
konventionelles Format für dieses System zuerst in der Suchliste, damit Mehrdeutigkeiten aufgelöst werden
zugunsten der Konvention.
"LDEMULATION" bestimmt die Standardemulation, wenn Sie die -m Option. Die
Emulation kann verschiedene Aspekte des Linker-Verhaltens beeinflussen, insbesondere den Standard-Linker
Skript. Sie können die verfügbaren Emulationen mit dem - ausführlich or -V Optionen. Wenn die
-m Option nicht verwendet wird und die Umgebungsvariable "LDEMULATION" nicht definiert ist,
Die Standardemulation hängt davon ab, wie der Linker konfiguriert wurde.
Normalerweise verwendet der Linker standardmäßig die Entschlüsselung von Symbolen. Wie auch immer, wenn
"COLLECT_NO_DEMANGLE" ist in der Umgebung gesetzt, dann wird es standardmäßig nicht demangling
Symbole. Diese Umgebungsvariable wird in ähnlicher Weise vom "gcc"-Linker verwendet
Wrapper-Programm. Die Standardeinstellung kann durch die . überschrieben werden --demangle und -No-Demangle
Optionen.
Verwenden Sie aarch64-linux-gnu-ld.bfd online über die Dienste von onworks.net