Skip to main content

Alles über den Linux / Unix-Befehl: ld

How to Add/Delete Users and Groups, Change Password, Finger: Linux Administration Tutorial 18 (Juni 2026)

How to Add/Delete Users and Groups, Change Password, Finger: Linux Administration Tutorial 18 (Juni 2026)
Anonim

NAME

ld - Mit LD den GNU-Linker

ZUSAMMENFASSUNG

ld Optionen objfile …

BESCHREIBUNG

ld fasst eine Reihe von Objekt- und Archivdateien zusammen, verschiebt deren Daten und bindet Symbolreferenzen. Normalerweise ist der letzte Schritt beim Kompilieren ein Programmld.

ld akzeptiert Linker Command Language-Dateien, die in einer Obermenge der Link Editor Command Language-Syntax von AT & T geschrieben sind, um eine explizite und vollständige Kontrolle über den Linkvorgang zu erhalten.

Diese Manpage beschreibt nicht die Befehlssprache. siehe dield Eintrag in "info" oder im Handbuch ld: der GNU-Linker, für vollständige Details zur Befehlssprache und zu anderen Aspekten des GNU-Linkers.

Diese Version vonld verwendet die BFD-Bibliotheken für allgemeine Zwecke zur Bearbeitung von Objektdateien. Dies erlaubtld Objektdateien in vielen verschiedenen Formaten lesen, kombinieren und schreiben - zum Beispiel COFF oder "a.out". Verschiedene Formate können miteinander verknüpft werden, um jede verfügbare Objektdatei zu erzeugen.

Abgesehen von seiner Flexibilität ist der GNU-Linker bei der Bereitstellung von Diagnoseinformationen hilfreicher als andere Linker. Viele Linker beenden die Ausführung sofort, wenn ein Fehler auftritt. wenn möglich,ld Die Ausführung wird fortgesetzt, sodass Sie andere Fehler erkennen können (oder in einigen Fällen trotz des Fehlers eine Ausgabedatei erhalten).

Der GNU-Linkerld soll ein breites Spektrum von Situationen abdecken und mit anderen Linkern möglichst kompatibel sein. Daher haben Sie viele Möglichkeiten, um das Verhalten zu steuern.

OPTIONEN

Der Linker unterstützt eine Vielzahl von Befehlszeilenoptionen, in der Praxis werden jedoch nur wenige davon in einem bestimmten Kontext verwendet. Zum Beispiel eine häufige Verwendung vonld dient zur Verknüpfung von Standard-Unix-Objektdateien auf einem unterstützten Standard-Unix-System. Um auf einem solchen System eine Datei "hello.o" zu verknüpfen:

ich mache /lib/crt0.o hallo.o -lc

Das sagtld eine Datei mit dem Namen Ausgabe als Ergebnis der Verknüpfung der Datei "/lib/crt0.o" mit "hello.o" und der Bibliothek "libc.a", die aus den Standardsuchverzeichnissen stammt. (Siehe die Diskussion des-l Option unten.)

Einige Befehlszeilenoptionen fürld kann an einer beliebigen Stelle der Befehlszeile angegeben werden. Optionen, die sich auf Dateien beziehen, wie z-l oder-Tveranlassen, dass die Datei an dem Punkt gelesen wird, an dem die Option in der Befehlszeile angezeigt wird, relativ zu den Objektdateien und anderen Dateioptionen. Das Wiederholen von Nicht-Datei-Optionen mit einem anderen Argument hat entweder keine weitere Auswirkung oder überschreibt frühere Vorkommen dieser Option (die sich weiter links in der Befehlszeile befinden). Optionen, die mehrfach sinnvoll angegeben werden können, sind in den folgenden Beschreibungen aufgeführt.

Nicht-Optionsargumente sind Objektdateien oder Archive, die miteinander verknüpft werden sollen. Sie können den Befehlszeilenoptionen folgen, vorausgehen oder mit diesen gemischt werden, mit der Ausnahme, dass ein Objektdateiargument nicht zwischen einer Option und ihrem Argument platziert werden darf.

Normalerweise wird der Linker mit mindestens einer Objektdatei aufgerufen. Sie können jedoch auch andere Formen binärer Eingabedateien angeben-l, -Rund die Skriptbefehlssprache. Ob Nein Binäreingabedateien werden angegeben, der Linker erzeugt keine Ausgabe und gibt die Nachricht ausKeine Eingabedateien.

Wenn der Linker das Format einer Objektdatei nicht erkennen kann, nimmt er an, dass es sich um ein Linkerskript handelt. Ein auf diese Weise angegebenes Skript erweitert das für die Verknüpfung verwendete Haupt-Linker-Skript (entweder das Standard-Linker-Skript oder das durch Verwendung angegebene Skript)-T). Mit dieser Funktion kann der Linker eine Verknüpfung mit einer Datei herstellen, die als Objekt oder Archiv erscheint, sie definiert jedoch lediglich einige Symbolwerte oder verwendet "INPUT" oder "GROUP", um andere Objekte zu laden. Beachten Sie, dass die Angabe eines Skripts auf diese Weise lediglich das Haupt-Linker-Skript erweitert. benutze die-T Option, um das Standard-Linker-Skript vollständig zu ersetzen.

Bei Optionen, deren Namen ein einzelner Buchstabe sind, müssen Optionsargumente entweder dem Optionsbuchstaben folgen, ohne Leerzeichen dazwischenzutreten, oder sie werden unmittelbar nach der Option, die sie erfordert, als separate Argumente angegeben.

Bei Optionen, deren Namen aus mehreren Buchstaben bestehen, kann dem Optionsnamen ein oder zwei Striche vorangestellt werden. zum Beispiel,-Spurzeichen und-Spurzeichen sind gleichwertig. Hinweis - Es gibt eine Ausnahme von dieser Regel. Mehrfachbuchstaben, die mit einem "o" in Kleinbuchstaben beginnen, können nur durch zwei Bindestriche vorangestellt werden. Dies soll die Verwechslung mit der-O Möglichkeit. Also zum Beispiel-omagic Setzt den Namen der Ausgabedatei aufZauber wohingegen--omagic setzt das NMAGIC-Flag am Ausgang.

Argumente für Optionen mit mehreren Buchstaben müssen entweder durch ein Gleichheitszeichen vom Optionsnamen getrennt sein oder unmittelbar nach der Option, die sie erfordert, als separate Argumente angegeben werden. Zum Beispiel,--Zugesymbol-Symbol und--trace-symbol = foo sind gleichwertig. Es werden eindeutige Abkürzungen der Namen von Optionen mit mehreren Buchstaben akzeptiert.

Hinweis - Wenn der Linker indirekt über einen Compiler-Treiber aufgerufen wird (z. B.gcc) dann sollten alle Linker-Befehlszeilenoptionen mit vorangestellt werden-Wl, (oder was auch immer für den jeweiligen Compiler-Treiber geeignet ist) wie folgt:

gcc - wl, - startgroup foo.o bar.o - wl, - endgruppe

Dies ist wichtig, da das Compiler-Treiberprogramm ansonsten die Linker-Optionen unbemerkt löschen kann, was zu einer fehlerhaften Verknüpfung führt.

Hier ist eine Tabelle der generischen Befehlszeilenschalter, die vom GNU-Linker akzeptiert werden:

-ein Stichwort

Diese Option wird aus Gründen der HP / UX-Kompatibilität unterstützt. Das Stichwort Argument muss eine der Zeichenfolgen seinArchiv, geteilt, oderStandard. -Archiv ist funktional äquivalent zu-Bstatischund die beiden anderen Schlüsselwörter sind funktional äquivalent zu-Dynamisch. Diese Option kann beliebig oft verwendet werden.

-EIN die Architektur

--architecture = die Architektur

In der aktuellen Version vonldDiese Option ist nur für die Intel 960-Architekturfamilie nützlich. In demld Konfiguration, die die Architektur Argument identifiziert die bestimmte Architektur in der 960-Familie, ermöglicht einige Sicherheitsmaßnahmen und ändert den Suchpfad der Archivbibliothek.

Zukünftige Releases vonld unterstützt möglicherweise ähnliche Funktionen für andere Architekturfamilien.

-b Eingabeformat

--format = Eingabeformat

ld kann so konfiguriert werden, dass mehr als eine Art von Objektdatei unterstützt wird. Wenn deinld so konfiguriert ist, können Sie das verwenden-b Option, um das Binärformat für Eingabeobjektdateien anzugeben, die dieser Option in der Befehlszeile folgen. Sogar wennld Ist für die Unterstützung alternativer Objektformate konfiguriert, müssen Sie dies normalerweise nicht als angebenld sollte so konfiguriert sein, dass das Standardformat auf jedem Rechner als Standardeingabeformat erwartet wird. Eingabeformat ist eine Zeichenfolge, der Name eines bestimmten Formats, das von den BFD-Bibliotheken unterstützt wird. (Sie können die verfügbaren Binärformate mit auflistenobjdump -i.)

Sie können diese Option verwenden, wenn Sie Dateien mit einem ungewöhnlichen binären Format verknüpfen. Sie können auch verwenden-b um Formate explizit zu wechseln (beim Verknüpfen von Objektdateien verschiedener Formate), indem Sie-b Eingabeformat vor jeder Gruppe von Objektdateien in einem bestimmten Format.

Das Standardformat wird aus der Umgebungsvariablen "GNUTARGET" übernommen.

Sie können das Eingabeformat auch mit einem Befehl "TARGET" aus einem Skript definieren.

-c MRI-Befehlsdatei

--mri-script = MRI-Befehlsdatei

Zur Kompatibilität mit von MRI hergestellten Linkernld akzeptiert Skriptdateien, die in einer alternativen, eingeschränkten Befehlssprache geschrieben sind und im Abschnitt "MRI-kompatible Skriptdateien" der GNU ld-Dokumentation beschrieben werden. Führen Sie MRI-Skriptdateien mit der Option ein-c; benutze die-T Option zum Ausführen von Linker-Skripts, die für allgemeine Zwecke geschrieben wurdenld Skriptsprache. Ob MRI-cmdfile ist nicht vorhanden,ldsucht in den von any angegebenen Verzeichnissen-L Optionen.

-d

-dc

-dp

Diese drei Optionen sind gleichwertig. Für die Kompatibilität mit anderen Linkern werden mehrere Formulare unterstützt. Sie weisen gemeinsamen Symbolen Platz zu, auch wenn eine verschiebbare Ausgabedatei angegeben wird (mit-r). Der Skriptbefehl "FORCE_COMMON_ALLOCATION" hat dieselbe Wirkung.

-e Eintrag

--entry = Eintrag

Benutzen Eintrag als explizites Symbol für den Beginn der Ausführung Ihres Programms und nicht als Standardeinstiegspunkt. Wenn kein Symbol benannt ist Eintrag versucht der Linker zu analysieren Eintrag als Nummer und verwenden Sie diese als Eintrittsadresse (die Nummer wird in Basis 10 interpretiert; Sie können eine führende Nummer verwenden0x für die Basis 16 oder eine führende0 für Basis 8).

-E

--exportdynamisch

Fügen Sie beim Erstellen einer dynamisch verknüpften ausführbaren Datei alle Symbole zur dynamischen Symboltabelle hinzu. Die dynamische Symboltabelle ist die Menge von Symbolen, die zur Laufzeit von dynamischen Objekten sichtbar sind.

Wenn Sie diese Option nicht verwenden, enthält die dynamische Symboltabelle normalerweise nur die Symbole, auf die von einem in der Verknüpfung genannten dynamischen Objekt verwiesen wird.

Wenn Sie "dlopen" verwenden, um ein dynamisches Objekt zu laden, das auf die vom Programm definierten Symbole zurückgreifen muss, und nicht auf ein anderes dynamisches Objekt, müssen Sie diese Option beim Verknüpfen des Programms selbst verwenden.

Mit dem Versionsskript können Sie auch steuern, welche Symbole der dynamischen Symboltabelle hinzugefügt werden sollen, wenn das Ausgabeformat dies unterstützt. Siehe die Beschreibung von--version-script in @ ref {VERSION}.

-EB

Verknüpfen Sie Big-Endian-Objekte. Dies wirkt sich auf das Standardausgabeformat aus.

-EL

Verknüpfen Sie Little-Endian-Objekte. Dies wirkt sich auf das Standardausgabeformat aus.

-f

--Hilfs Name

Setzen Sie beim Erstellen eines ELF-Shared-Objekts das interne Feld DT_AUXILIARY auf den angegebenen Namen. Dies teilt dem Dynamic Linker mit, dass die Symboltabelle des gemeinsam genutzten Objekts als Hilfsfilter für die Symboltabelle des gemeinsam genutzten Objekts verwendet werden soll Name .

Wenn Sie später ein Programm mit diesem Filterobjekt verknüpfen, wird der dynamische Linker beim Ausführen des Programms das Feld DT_AUXILIARY sehen. Wenn der Dynamic Linker Symbole aus dem Filterobjekt auflöst, wird zunächst geprüft, ob im Shared Object eine Definition vorhanden ist Name . Wenn es eines gibt, wird es anstelle der Definition im Filterobjekt verwendet. Das gemeinsam genutzte Objekt Name muss nicht existieren Also das gemeinsame Objekt Name kann verwendet werden, um eine alternative Implementierung bestimmter Funktionen bereitzustellen, beispielsweise für das Debugging oder für die maschinenspezifische Leistung.

Diese Option kann mehrmals angegeben werden. Die DT_AUXILIARY-Einträge werden in der Reihenfolge erstellt, in der sie in der Befehlszeile angezeigt werden.

-F Name

--Filter Name

Setzen Sie beim Erstellen eines ELF-Shared-Objekts das interne DT_FILTER-Feld auf den angegebenen Namen. Dies teilt dem Dynamic Linker mit, dass die Symboltabelle des erstellten Shared Objects als Filter für die Symboltabelle des Shared Objects verwendet werden soll Name .

Wenn Sie später ein Programm mit diesem Filterobjekt verknüpfen, wird der dynamische Linker beim Ausführen des Programms das Feld DT_FILTER sehen. Der Dynamic Linker löst Symbole wie üblich gemäß der Symboltabelle des Filterobjekts auf, verknüpft jedoch tatsächlich die Definitionen des gemeinsam genutzten Objekts Name . Somit kann das Filterobjekt verwendet werden, um eine Teilmenge der durch das Objekt bereitgestellten Symbole auszuwählen Name .

Einige ältere Linker verwendeten die-F Option in einer Kompilierungs-Toolchain zum Angeben des Objektdateiformats für Eingabe- und Ausgabeobjektdateien. Der GNU-Linker verwendet zu diesem Zweck andere Mechanismen: den-b, --Format, --Format Optionen, den Befehl "TARGET" in Linkerskripten und die Umgebungsvariable "GNUTARGET". Der GNU-Linker wird das ignorieren-F Option, wenn kein ELF-Shared-Objekt erstellt wird.

-fini Name

Rufen Sie beim Erstellen einer ausführbaren ELF-Datei oder eines gemeinsam genutzten Objekts NAME auf, wenn die ausführbare Datei oder das gemeinsam genutzte Objekt entladen wird, indem Sie DT_FINI auf die Adresse der Funktion setzen. Standardmäßig verwendet der Linker "_fini" als aufzurufende Funktion.

-G

Ignoriert Zur Kompatibilität mit anderen Tools bereitgestellt.

-G Wert

--gpsize = Wert

Legen Sie die maximale Größe der Objekte fest, die mit dem GP-Register optimiert werden sollen Größe . Dies ist nur für Objektdateiformate wie MIPS ECOFF von Bedeutung, die das Einfügen großer und kleiner Objekte in verschiedene Abschnitte unterstützen. Dies wird für andere Objektdateiformate ignoriert.

-h Name

-soname = Name

Setzen Sie beim Erstellen eines ELF-Shared-Objekts das interne DT_SONAME-Feld auf den angegebenen Namen. Wenn eine ausführbare Datei mit einem gemeinsam genutzten Objekt verknüpft ist, das über ein DT_SONAME-Feld verfügt, versucht der dynamische Linker bei Ausführung der ausführbaren Datei, das über das DT_SONAME-Feld angegebene gemeinsame Objekt zu laden, anstatt den Dateinamen zu verwenden, der dem Linker angegeben wurde.

-ich

Führen Sie eine inkrementelle Verknüpfung aus (wie bei Option)-r).

-drin Name

Rufen Sie beim Erstellen einer ausführbaren ELF-Datei oder eines gemeinsam genutzten Objekts NAME auf, wenn die ausführbare Datei oder das gemeinsam genutzte Objekt geladen wird, indem Sie DT_INIT auf die Adresse der Funktion setzen. Standardmäßig verwendet der Linker "_init" als aufzurufende Funktion.

-l Archiv

--library = Archiv

Archivdatei hinzufügen Archiv zur Liste der zu verknüpfenden Dateien. Diese Option kann beliebig oft verwendet werden.ld durchsucht seine Pfadliste nach Vorkommen von "libarchive.a" für jeden Archiv spezifizierten.

Auf Systemen, die gemeinsam genutzte Bibliotheken unterstützen,ld kann auch nach Bibliotheken mit anderen Erweiterungen als ".a" suchen. Insbesondere bei ELF- und SunOS-Systemenld durchsucht ein Verzeichnis nach einer Bibliothek mit der Erweiterung ".so", bevor Sie nach einem Verzeichnis mit der Erweiterung ".a" suchen. Die Erweiterung ".so" gibt eine gemeinsame Bibliothek an.

Der Linker durchsucht ein Archiv nur einmal an der Stelle, an der es in der Befehlszeile angegeben ist. Wenn das Archiv ein Symbol definiert, das in einem Objekt undefiniert war, das vor dem Archiv in der Befehlszeile angezeigt wurde, enthält der Linker die entsprechenden Dateien aus dem Archiv. Ein undefiniertes Symbol in einem Objekt, das später in der Befehlszeile angezeigt wird, führt jedoch nicht dazu, dass der Linker das Archiv erneut durchsucht.

Siehe die-( Option, um den Linker zu zwingen, Archive mehrfach 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 verwendenld Beachten Sie bei AIX, dass es sich vom Verhalten des AIX-Linkers unterscheidet.

-L searchdir

--library-path = searchdir

Pfad hinzufügen searchdir zu der Liste der Pfadeld sucht nach Archivbibliotheken undld Kontrollskripte. Sie können diese Option beliebig oft verwenden. Die Verzeichnisse werden in der Reihenfolge durchsucht, in der sie in der Befehlszeile angegeben werden. In der Befehlszeile angegebene Verzeichnisse werden vor den Standardverzeichnissen durchsucht. Alles-L Optionen gelten für alle-l Optionen, unabhängig von der Reihenfolge, in der die Optionen angezeigt werden.

Ob searchdir beginnt mit "=", dann wird das "=" durch das ersetzt Sysroot-Präfix , ein Pfad, der angegeben wird, wenn der Linker konfiguriert ist.

Der Standardsatz der durchsuchten Pfade (ohne Angabe mit-L) hängt davon ab, welcher Emulationsmodusld verwendet, und in einigen Fällen auch, wie es konfiguriert wurde.

Die Pfade können auch in einem Link-Skript mit dem Befehl "SEARCH_DIR" angegeben werden. Auf diese Weise angegebene Verzeichnisse werden an der Stelle durchsucht, an der das Linker-Skript in der Befehlszeile angezeigt wird.

-m Emulation

Emulieren Sie die Emulation Linker. Mit können Sie die verfügbaren Emulationen auflisten--verbose oder-VOptionen.

Wenn die-m Wenn die Option nicht verwendet wird, wird die Emulation aus der Umgebungsvariablen "LDEMULATION" übernommen, sofern diese definiert ist.

Andernfalls hängt die Standardemulation davon ab, wie der Linker konfiguriert wurde.

-M

--print-map

Drucken Sie eine Link-Map zur Standardausgabe. Eine Link-Map enthält Informationen zum Link, einschließlich der folgenden:

*

Wo Objektdateien und -symbole in den Speicher abgebildet werden.

*

Wie gewöhnliche Symbole zugeordnet werden

*

Alle Archivmitglieder, die in dem Link enthalten sind, mit einem Symbol, das das Einfügen des Archivmitglieds verursacht hat.

-n

--nmagic

Deaktivieren Sie die Seitenausrichtung von Abschnitten und markieren Sie die Ausgabe als "NMAGIC", wenn möglich.

-N

--omagic

Stellen Sie die Text- und Datenbereiche so ein, dass sie lesbar und beschreibbar sind. Richten Sie das Datensegment nicht auf eine Seite aus und deaktivieren Sie die Verknüpfung mit freigegebenen Bibliotheken. Wenn das Ausgabeformat magische Zahlen im Unix-Stil unterstützt, markieren Sie die Ausgabe als "OMAGIC".

--no-omagisch

Diese Option negiert die meisten Auswirkungen von-N Möglichkeit. Es legt fest, dass der Textabschnitt schreibgeschützt ist, und zwingt das Datensegment zur Seitenausrichtung. Hinweis - Diese Option aktiviert keine Verknüpfung mit gemeinsam genutzten Bibliotheken. Benutzen-Dynamisch dafür.

-O Ausgabe

--output = Ausgabe

Benutzen Ausgabe als Name für das vonld; Wenn diese Option nicht angegeben ist, der Name a.out wird standardmäßig verwendet. Der Skriptbefehl "OUTPUT" kann auch den Namen der Ausgabedatei angeben.

-O Niveau

Ob Niveau ist ein numerischer Wert größer als Nullld optimiert die Ausgabe. Dies kann erheblich länger dauern und sollte daher wahrscheinlich nur für die letzte Binärdatei aktiviert werden.

-q

--emit-relocs

Überlassen Sie die Umlagerungsabschnitte und den Inhalt in vollständig verknüpften ausführbaren Dateien. Post-Link-Analyse- und -Optimierungswerkzeuge benötigen diese Informationen möglicherweise, um ausführbare Dateien korrekt zu modifizieren. Dies führt zu größeren ausführbaren Dateien.

Diese Option wird derzeit nur auf ELF-Plattformen unterstützt.

-r

--Zuweisbar

Erzeugen einer verschiebbaren Ausgabe - d. H. Erzeugen einer Ausgabedatei, die wiederum als Eingabe dienen kannld. Dies wird oft genannt teilweise Verknüpfung . Als Nebeneffekt setzt diese Option in Umgebungen, die standardmäßige Unix-Magic-Nummern unterstützen, auch die Magic-Nummer der Ausgabedatei auf "OMAGIC". Wenn diese Option nicht angegeben ist, wird eine absolute Datei erstellt. Beim Verknüpfen von C ++ - Programmen diese Option wird nicht Verweise auf Konstruktoren auflösen; Verwenden Sie dazu-Ur.

Wenn eine Eingabedatei nicht das gleiche Format wie die Ausgabedatei hat, wird die teilweise Verknüpfung nur unterstützt, wenn diese Eingabedatei keine Verschiebungen enthält. Für verschiedene Ausgabeformate können weitere Einschränkungen gelten. Beispielsweise unterstützen einige "a.out" -basierte Formate überhaupt keine partielle Verknüpfung mit Eingabedateien in anderen Formaten.

Diese Option macht dasselbe wie-ich.

-R Dateiname

--just-symbole = Dateiname

Lesen Sie die Symbolnamen und ihre Adressen aus Dateiname , aber verschieben Sie es nicht oder fügen Sie es nicht in die Ausgabe ein. Dadurch kann Ihre Ausgabedatei symbolisch auf in anderen Programmen definierte absolute Speicherorte verweisen. Sie können diese Option mehrmals verwenden.

Zur Kompatibilität mit anderen ELF-Linkern, wenn die-R Auf die Option folgt ein Verzeichnisname und nicht ein Dateiname-pfad Möglichkeit.

-s

--strip-all

Lassen Sie alle Symbolinformationen aus der Ausgabedatei aus.

-S

--strip-debug

Lassen Sie die Debugger-Symbolinformationen (aber nicht alle Symbole) aus der Ausgabedatei aus.

-t

--Spur

Drucken Sie die Namen der Eingabedateien alsld verarbeitet sie.

-T Skriptdatei

--script = Skriptdatei

Benutzen Skriptdatei als Linker-Skript. Dieses Skript ersetztlddas Standard-Linker-Skript (anstatt es hinzuzufügen), so Befehlsdatei muss alles angeben, was zur Beschreibung der Ausgabedatei erforderlich ist. Ob Skriptdatei Ist im aktuellen Verzeichnis nicht vorhanden, sucht "ld" in den Verzeichnissen nach einem der vorhergehenden Verzeichnisse-L Optionen. Mehrere-T Optionen sammeln sich an.

-u Symbol

--undefined = Symbol

Macht Symbol als undefiniertes Symbol in die Ausgabedatei einzugeben. Dies kann zum Beispiel die Verknüpfung weiterer Module aus Standardbibliotheken auslösen.-u kann mit verschiedenen Optionsargumenten wiederholt werden, um weitere undefinierte Symbole einzugeben. Diese Option entspricht dem Linker-Skriptbefehl "EXTERN".

-Ur

Für alle anderen Programme als C ++ - Programme ist diese Option äquivalent zu-r: erzeugt eine verschiebbare Ausgabe - d. h. eine Ausgabedatei, die wiederum als Eingabe dienen kannld. Beim Verknüpfen von C ++ - Programmen-Ur tut Verweise auf Konstruktoren auflösen, im Gegensatz zu-r. Es funktioniert nicht zu verwenden-Ur auf Dateien, mit denen sie selbst verlinkt wurden-Ur; Sobald die Konstruktortabelle erstellt wurde, kann sie nicht hinzugefügt werden. Benutzen-Ur nur für den letzten partiellen Link und-r für die anderen

--unique = SEKTION

Erzeugt einen separaten Ausgabeabschnitt für jeden übereinstimmenden Eingabeabschnitt SEKTION oder wenn der optionale Platzhalter SEKTION Für jeden verwaisten Eingabebereich fehlt ein Argument. Ein verwaister Abschnitt wird in einem Linker-Skript nicht ausdrücklich erwähnt. Sie können diese Option mehrmals in der Befehlszeile verwenden. Es verhindert das normale Zusammenführen von gleichnamigen Eingabeabschnitten, wodurch die Zuweisung von Ausgabeabschnitten in einem Linkerskript überschrieben wird.

-v

--Ausführung

-V

Zeigt die Versionsnummer für anld. Das-V Option listet auch die unterstützten Emulationen auf.

-x

--discard-all

Löschen Sie alle lokalen Symbole.

-X

--discard-Einheimische

Löschen Sie alle temporären lokalen Symbole. Für die meisten Ziele sind dies alle lokalen Symbole, deren Namen mit beginnenL.

-y Symbol

--trace-symbol = Symbol

Drucken Sie den Namen jeder verknüpften Datei, in der Symbol erscheint. Diese Option kann beliebig oft angegeben werden. Bei vielen Systemen muss ein Unterstrich vorangestellt werden.

Diese Option ist nützlich, wenn Sie in Ihrem Link ein undefiniertes Symbol haben, aber nicht wissen, woher die Referenz kommt.

-Y Pfad

Hinzufügen Pfad zum Standard-Suchpfad der Bibliothek. Diese Option ist für die Kompatibilität mit Solaris verfügbar.

-z Stichwort

Die erkannten Schlüsselwörter sind "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" und "nocopyreloc" ". Die anderen Schlüsselwörter werden aus Gründen der Solaris-Kompatibilität ignoriert. "initfirst" markiert das zu initialisierende Objekt zur Laufzeit vor allen anderen Objekten."interpose" markiert das Objekt, das seine Symboltabelle vor allen Symbolen außer der primären ausführbaren Datei einfügt. "loadfltr" kennzeichnet das Objekt, dessen Dateien sofort zur Laufzeit verarbeitet werden. "nodefaultlib" markiert das Objekt, das bei der Suche nach Abhängigkeiten dieses Objekts ignoriert wird beliebige Standardbibliotheksuchpfade. "nodelete" markiert, dass das Objekt zur Laufzeit nicht entladen werden soll. "nodlopen" markiert das Objekt, das nicht für "dlopen" verfügbar ist. "nodump" markiert das Objekt kann nicht mit "dldump" ausgegeben werden. "now" markiert das Objekt mit der nicht faulen Laufzeitbindung. "origin" markiert, dass das Objekt $ ORIGIN enthalten kann. "defs" verbietet undefinierte Symbole. "muldefs" erlaubt mehrere Definitionen. "combreloc" kombiniert mehrere Reloc-Abschnitte und sortiert sie, um das Zwischenspeichern von dynamischen Symbolen zu ermöglichen.

"nocombreloc" deaktiviert das Kombinieren mehrerer Reloc-Abschnitte. "nocopyreloc" deaktiviert die Produktion von Kopier-Relocs.

-( Archiv -)

--Startgruppe Archiv Endgruppe

Das Archiv sollte eine Liste von Archivdateien sein. Sie können entweder explizite Dateinamen sein oder-lOptionen.

Die angegebenen Archive werden wiederholt durchsucht, bis keine neuen undefinierten Verweise erstellt werden. Normalerweise wird ein Archiv nur einmal in der Reihenfolge durchsucht, in der es in der Befehlszeile angegeben ist. Wenn ein Symbol in diesem Archiv benötigt wird, um ein undefiniertes Symbol aufzulösen, auf das ein Objekt in einem Archiv verweist, das später in der Befehlszeile angezeigt wird, kann der Linker diesen Verweis nicht auflösen. Durch das Gruppieren der Archive werden sie alle wiederholt durchsucht, bis alle möglichen Referenzen aufgelöst sind.

Die Verwendung dieser Option hat erhebliche Leistungskosten zur Folge. Es ist am besten, es nur zu verwenden, wenn zwischen zwei oder mehr Archiven unvermeidbare Zirkelverweise bestehen.

--accept-unknown-input-arch

--no-accept-unknown-input-arch

Weist den Linker an, Eingabedateien zu akzeptieren, deren Architektur nicht erkannt werden kann. Es wird davon ausgegangen, dass der Benutzer weiß, was er tut, und möchte bewusst in diese unbekannten Eingabedateien einbinden. Dies war das Standardverhalten des Linkers vor Version 2.14. Das Standardverhalten ab Version 2.14 besteht darin, solche Eingabedateien abzulehnen--accept-unknown-input-arch Option wurde hinzugefügt, um das alte Verhalten wiederherzustellen.

-behaupten Stichwort

Diese Option wird aus Gründen der SunOS-Kompatibilität ignoriert.

-Dynamisch

-dy

-call_shared

Verbindung gegen dynamische Bibliotheken. Dies ist nur auf Plattformen von Bedeutung, für die gemeinsam genutzte Bibliotheken unterstützt werden. Diese Option ist normalerweise auf solchen Plattformen der Standard. Die verschiedenen Varianten dieser Option dienen der Kompatibilität mit verschiedenen Systemen. Sie können diese Option mehrmals in der Befehlszeile verwenden: Dies wirkt sich auf die Suche nach Bibliotheken aus-l Optionen, die darauf folgen.

-Bruppe

Setzen Sie das Flag "DF_1_GROUP" im Eintrag "DT_FLAGS_1" im dynamischen Abschnitt. Dies führt dazu, dass der Laufzeit-Linker Lookups in diesem Objekt verarbeitet und seine Abhängigkeiten nur innerhalb der Gruppe ausgeführt werden.--no-undefined ist impliziert. Diese Option ist nur auf ELF-Plattformen sinnvoll, die gemeinsam genutzte Bibliotheken unterstützen.

-Bstatisch

-dn

-non_shared

-statisch

Verknüpfen Sie nicht mit gemeinsam genutzten Bibliotheken. Dies ist nur auf Plattformen von Bedeutung, für die gemeinsam genutzte Bibliotheken unterstützt werden. Die verschiedenen Varianten dieser Option dienen der Kompatibilität mit verschiedenen Systemen. Sie können diese Option mehrmals in der Befehlszeile verwenden: Dies wirkt sich auf die Suche nach Bibliotheken aus-l Optionen, die darauf folgen.

-Symbolisch

Binden Sie beim Erstellen einer gemeinsam genutzten Bibliothek ggf. Verweise auf globale Symbole an die Definition in der gemeinsam genutzten Bibliothek. Normalerweise kann ein Programm, das mit einer gemeinsam genutzten Bibliothek verbunden ist, die Definition in der gemeinsam genutzten Bibliothek überschreiben. Diese Option ist nur für ELF-Plattformen relevant, die gemeinsam genutzte Bibliotheken unterstützen.

--check-Abschnitte

--keine Check-Abschnitte

Fragt den Linker nicht Abschnittsadressen prüfen, nachdem sie zugewiesen wurden, um zu sehen, ob es Überschneidungen gibt. Normalerweise führt der Linker diese Überprüfung durch, und wenn er Überlappungen findet, werden geeignete Fehlermeldungen angezeigt. Der Linker weiß über Abschnitte in Überlagerungen Bescheid und berücksichtigt sie. Das Standardverhalten kann mithilfe der Befehlszeilenoption wiederhergestellt werden--check-Abschnitte.

--cref

Ausgabe einer Querverweistabelle. Wenn eine Linker-Map-Datei erstellt wird, wird die Querverweistabelle in die Map-Datei gedruckt. Andernfalls wird es in der Standardausgabe gedruckt.

Das Format der Tabelle ist absichtlich einfach, so dass sie bei Bedarf leicht von einem Skript verarbeitet werden kann. Die Symbole werden nach Namen sortiert ausgedruckt. Für jedes Symbol wird eine Liste mit Dateinamen angegeben. Wenn das Symbol definiert ist, wird als erste Datei der Speicherort der Definition aufgelistet. Die restlichen Dateien enthalten Verweise auf das Symbol.

--no-define-common

Diese Option verhindert die Zuordnung von Adressen zu allgemeinen Symbolen. Der Skriptbefehl "INHIBIT_COMMON_ALLOCATION" hat dieselbe Wirkung.

Das--no-define-common Diese Option ermöglicht die Entkopplung der Entscheidung, den Common Symbolen Adressen zuzuordnen, von der Wahl des Ausgabedateityps. Andernfalls erzwingt ein nicht verschiebbarer Ausgabetyp die Zuweisung von Adressen zu allgemeinen Symbolen. Verwenden--no-define-common Mit Common Symbolen, auf die von einer gemeinsam genutzten Bibliothek verwiesen wird, können Adressen nur im Hauptprogramm zugewiesen werden. Dies beseitigt den nicht verwendeten doppelten Speicherplatz in der gemeinsam genutzten Bibliothek und verhindert außerdem mögliche Verwirrung beim Auflösen in das falsche Duplikat, wenn viele dynamische Module mit speziellen Suchpfaden für die Laufzeitsymbolauflösung vorhanden sind.

--defsym Symbol = Ausdruck

Erstellen Sie in der Ausgabedatei ein globales Symbol, das die durch gegebene absolute Adresse enthält Ausdruck . Sie können diese Option so oft wie nötig verwenden, um mehrere Symbole in der Befehlszeile zu definieren. Eine begrenzte Form der Arithmetik wird für die unterstützt Ausdruck In diesem Zusammenhang: Sie können eine hexadezimale Konstante oder den Namen eines vorhandenen Symbols angeben oder "+" und "-" verwenden, um hexadezimale Konstanten oder Symbole hinzuzufügen oder zu subtrahieren. Wenn Sie ausführlichere Ausdrücke benötigen, sollten Sie die Befehlssprache des Linkers in einem Skript verwenden. Hinweis: Es sollte kein Leerzeichen dazwischen sein Symbol , das Gleichheitszeichen (``=''), und Ausdruck .

--demangle = Stil

- no-demangle

Diese Optionen legen fest, ob Symbolnamen in Fehlermeldungen und anderen Ausgaben zu demangeln sind. Wenn der Linker angewiesen wird, sich zu entwirren, versucht er, die Symbolnamen auf lesbare Weise darzustellen: Er entfernt führende Unterstriche, wenn sie vom Objektdateiformat verwendet werden, und konvertiert die mit C ++ verknüpften Symbolnamen in vom Benutzer lesbare Namen. Verschiedene Compiler haben unterschiedliche Mangle-Stile. Mit dem optionalen Entgleisungsstil-Argument kann ein geeigneter Entgleisungsstil für Ihren Compiler ausgewählt werden. Der Linker wird standardmäßig entwirrt, es sei denn, die UmgebungsvariableCOLLECT_NO_DEMANGLE eingestellt ist. Diese Optionen können verwendet werden, um die Standardeinstellung zu überschreiben.

- dynamischer Linker Datei

Legen Sie den Namen des dynamischen Linkers fest. Dies ist nur dann sinnvoll, wenn dynamisch verknüpfte ELF-Programmdateien generiert werden. Der standardmäßige dynamische Linker ist normalerweise korrekt. Verwenden Sie dies nicht, wenn Sie nicht wissen, was Sie tun.

--betgte Relocs

Diese Option ist nur dann sinnvoll, wenn mit der Option -membedded-pic generierter MIPS-eingebetteter PIC-Code mit dem GNU-Compiler und -Assembler verknüpft wird. Der Linker erstellt eine Tabelle, die zur Laufzeit verwendet werden kann, um alle Daten, die statisch auf Zeigerwerte initialisiert wurden, zu verschieben. Weitere Informationen finden Sie im Code in testsuite / ld-empic.

- fatale Warnungen

Behandle alle Warnungen als Fehler.

--force-exe-Suffix

Stellen Sie sicher, dass eine Ausgabedatei ein EXE-Suffix aufweist.

Wenn eine erfolgreich erstellte, vollständig verknüpfte Ausgabedatei kein Suffix ".exe" oder ".dll" hat, zwingt diese Option den Linker, die Ausgabedatei in ein gleichnamiges Suffix mit dem Suffix ".exe" zu kopieren. Diese Option ist nützlich, wenn Sie nicht geänderte Unix-Makefiles auf einem Microsoft Windows-Host verwenden, da einige Windows-Versionen kein Abbild ausführen, wenn es nicht mit einem Suffix ".exe" endet.

--no-gc-Abschnitte

--gc-Abschnitte

Aktivieren Sie die Speicherbereinigung nicht verwendeter Eingabeabschnitte. Es wird bei Zielen ignoriert, die diese Option nicht unterstützen. Diese Option ist nicht mit kompatibel-rEs sollte auch nicht mit dynamischen Verknüpfungen verwendet werden. Das Standardverhalten (diese Garbage Collection wird nicht durchgeführt) kann durch Angabe wiederhergestellt werden--no-gc-Abschnitte in der Kommandozeile.

--Hilfe

Drucken Sie eine Zusammenfassung der Befehlszeilenoptionen in der Standardausgabe und beenden Sie sie.

- Zielhilfe

Drucken Sie eine Zusammenfassung aller zielspezifischen Optionen in der Standardausgabe und beenden Sie sie.

-Karte Mapfile

Drucken Sie eine Link-Map zur Datei Mapfile . Siehe die Beschreibung der-M Option oben.

--keins Gedächtnis

ld Optimiert normalerweise die Geschwindigkeit des Speichers, indem die Symboltabellen der Eingabedateien im Speicher zwischengespeichert werden. Diese Option sagt ausld stattdessen für die Speichernutzung zu optimieren, indem die Symboltabellen nach Bedarf erneut gelesen werden. Dies kann erforderlich sein, wennld Es steht nicht genügend Speicherplatz zur Verfügung, während eine große ausführbare Datei verknüpft wird.

--no-undefined

-z defs

Normalerweise werden beim Erstellen einer nicht-symbolischen gemeinsam genutzten Bibliothek undefinierte Symbole zugelassen und vom Laufzeitladeprogramm aufgelöst. Diese Optionen verbieten solche undefinierten Symbole.

--allow-multiple-definition

-z muldefs

Wenn ein Symbol mehrmals definiert wird, meldet der Linker normalerweise einen schwerwiegenden Fehler. Diese Optionen ermöglichen mehrere Definitionen, und die erste Definition wird verwendet.

--allow-shlib-undefined

Lassen Sie undefinierte Symbole in gemeinsam genutzten Objekten zu, auch wenn --no-undefined gesetzt ist. Das Ergebnis ist, dass undefinierte Symbole in regulären Objekten immer noch einen Fehler auslösen, aber undefinierte Symbole in gemeinsam genutzten Objekten werden ignoriert. Bei der Implementierung von no_undefined wird davon ausgegangen, dass der Laufzeit-Linker undefinierte Symbole drosselt. Es gibt jedoch mindestens ein System (BeOS), bei dem undefinierte Symbole in gemeinsam genutzten Bibliotheken normal sind, da der Kernel sie zum Zeitpunkt des Ladens patcht, um auszuwählen, welche Funktion für die aktuelle Architektur am besten geeignet ist. I.E. Wählen Sie eine geeignete Memset-Funktion dynamisch aus. Anscheinend ist es auch normal, dass HPPA Shared Libraries undefinierte Symbole haben.

--no-undefined-version

Wenn ein Symbol eine undefinierte Version hat, wird es normalerweise vom Linker ignoriert. Diese Option lässt keine Symbole mit undefinierter Version zu und stattdessen wird ein schwerwiegender Fehler ausgegeben.

- no-warn-mismatch

Normalerweiseld Wenn Sie versuchen, Eingabedateien miteinander zu verknüpfen, die aus irgendeinem Grund nicht übereinstimmen, möglicherweise, weil sie für verschiedene Prozessoren oder für unterschiedliche Endianismen kompiliert wurden. Diese Option sagt ausld dass es solche möglichen Fehler lautlos zulassen sollte. Diese Option sollte nur mit Vorsicht verwendet werden, wenn Sie spezielle Maßnahmen getroffen haben, um sicherzustellen, dass die Linker-Fehler nicht geeignet sind.

--keine ganze Archiv

Deaktivieren Sie den Effekt von- Whole-Archiv Option für nachfolgende Archivdateien.

--noinhibit-exec

Bewahren Sie die ausführbare Ausgabedatei auf, wenn sie noch verwendbar ist.Normalerweise erzeugt der Linker keine Ausgabedatei, wenn während des Linkvorgangs Fehler auftreten. Es wird beendet, ohne eine Ausgabedatei zu schreiben, wenn ein Fehler ausgegeben wird.

-nostdlib

Nur in der Befehlszeile explizit angegebene Bibliotheksverzeichnisse durchsuchen. Bibliotheksverzeichnisse, die in Linkerskripten angegeben sind (einschließlich der in der Befehlszeile angegebenen Linkerskripts), werden ignoriert.

--Format Ausgabeformat

ld kann so konfiguriert werden, dass mehr als eine Art von Objektdatei unterstützt wird. Wenn deinld so konfiguriert ist, können Sie das verwenden--Format Option, um das Binärformat für die Ausgabeobjektdatei anzugeben. Sogar wennld Ist für die Unterstützung alternativer Objektformate konfiguriert, müssen Sie dies normalerweise nicht als angebenld sollte so konfiguriert sein, dass das Standardformat auf jedem Computer als Standardausgabeformat erstellt wird. Ausgabeformat ist eine Zeichenfolge, der Name eines bestimmten Formats, das von den BFD-Bibliotheken unterstützt wird. (Sie können die verfügbaren Binärformate mit auflistenobjdump -i.) Der Skriptbefehl "OUTPUT_FORMAT" kann auch das Ausgabeformat angeben. Diese Option wird jedoch durch diese Option überschrieben.

-qmagic

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

Eine Option mit maschinenabhängigen Effekten. Diese Option wird nur für einige Ziele unterstützt.

Auf einigen Plattformen ist das--Entspannen Sie Sich Diese Option führt globale Optimierungen durch, die möglich werden, wenn der Linker die Adressierung im Programm auflöst, z.

Auf einigen Plattformen können globale Optimierungen dieser Verknüpfungszeit das symbolische Debuggen der resultierenden ausführbaren Datei unmöglich machen. Dies ist bekanntermaßen der Fall bei den Matsushita-Prozessoren MN10200 und MN10300.

Auf Plattformen, auf denen dies nicht unterstützt wird,--Entspannen Sie Sich wird akzeptiert, aber ignoriert.

--Retain-Symbol-Datei Dateiname

Behalten nur die in der Datei aufgeführten Symbole Dateiname , alle anderen wegwerfen. Dateiname ist einfach eine flache Datei mit einem Symbolnamen pro Zeile. Diese Option ist besonders in Umgebungen (z. B. VxWorks) nützlich, in denen eine große globale Symboltabelle allmählich angesammelt wird, um den Laufzeitspeicher zu sparen.

--Retain-Symbol-Datei tut nicht verwerfen nicht definierte Symbole oder Symbole, die für Umsiedlungen benötigt werden.

Sie können nur angeben--Retain-Symbol-Datei einmal in der Befehlszeile. Es überschreibt-s und-S.

-pfad dir

Fügen Sie dem Suchpfad der Laufzeitbibliothek ein Verzeichnis hinzu. Wird verwendet, wenn eine ELFexecutable mit Shared Objects verknüpft wird. Alles-pfad Argumente werden verkettet und an den Laufzeit-Linker übergeben, der sie zur Laufzeit zur Suche nach gemeinsam genutzten Objekten verwendet. Das-pfad Diese Option wird auch verwendet, um Shared Objects zu finden, die von Shared Objects benötigt werden, die explizit in der Verknüpfung enthalten sind. siehe die Beschreibung des-rpath-link Möglichkeit. Ob-pfad Wird beim Verknüpfen einer ELF-Programmdatei nicht verwendet, wird der Inhalt der Umgebungsvariablen "LD_RUN_PATH" verwendet, wenn sie definiert ist.

Das-pfad Option kann auch unter SunOS verwendet werden. Unter SunOS bildet der Linker standardmäßig einen Laufzeit-Suchpatch aus allen-L Optionen sind gegeben. Wenn eine-pfad Wenn die Option verwendet wird, wird der Laufzeitsuchpfad ausschließlich mit der Option gebildet-pfad Optionen, ignorieren die-LOptionen. Dies kann nützlich sein, wenn Sie gcc verwenden, was viele hinzufügt-L Optionen, bei denen es sich um OnFS-Dateisysteme handeln kann.

Zur Kompatibilität mit anderen ELF-Linkern, wenn die-R Auf die Option folgt ein Verzeichnisname und nicht ein Dateiname-pfad Möglichkeit.

-rpath-link DIR

Bei Verwendung von ELF oder SunOS erfordert eine gemeinsam genutzte Bibliothek möglicherweise eine andere. Dies geschieht, wenn ein Link "ld -shared" eine gemeinsam genutzte Bibliothek als eine der Eingabedateien enthält.

Wenn der Linker auf eine solche Abhängigkeit stößt, wenn er einen nicht gemeinsam genutzten, nicht verschiebbaren Link ausführt, versucht er automatisch, die erforderliche gemeinsam genutzte Bibliothek zu finden und in den Link aufzunehmen, sofern sie nicht explizit enthalten ist. In einem solchen Fall ist die-rpath-link Option gibt die ersten zu durchsuchenden Verzeichnisse an. Das-rpath-link Option kann eine Folge von Verzeichnisnamen angeben, indem Sie entweder eine Liste von Namen angeben, die durch Doppelpunkte getrennt sind, oder indem Sie mehrmals erscheinen.

Diese Option sollte mit Vorsicht verwendet werden, da sie den Suchpfad überschreibt, der möglicherweise schwer in eine gemeinsam genutzte Bibliothek kompiliert wurde. In einem solchen Fall ist es möglich, unbeabsichtigt einen anderen Suchpfad als den Laufzeit-Linker zu verwenden.

Der Linker verwendet die folgenden Suchpfade, um die erforderlichen gemeinsam genutzten Bibliotheken zu finden.

1.

Alle Verzeichnisse, die mit angegeben werden-rpath-link Optionen.

2.

Alle Verzeichnisse, die mit angegeben werden-pfad Optionen. Der Unterschied zwischen-pfad und-rpath-link ist das Verzeichnis, das durch angegeben wird-pfad Optionen sind in der ausführbaren Datei enthalten und werden zur Laufzeit verwendet, während die-rpath-link Diese Option ist nur zur Verbindungszeit wirksam. Es ist nur für den nativen Linker.

3.

Bei einem ELF-System, wenn die-pfad und "rpath-link" -Optionen wurden nicht verwendet, durchsuchen Sie den Inhalt der Umgebungsvariablen "LD_RUN_PATH". Es ist nur für den nativen Linker.

4.

Unter SunOS, wenn die-pfad Option wurde nicht verwendet, durchsuchen Sie die angegebenen Verzeichnisse mit-L Optionen.

5.

Bei einem systemeigenen Linker der Inhalt der Umgebungsvariablen "LD_LIBRARY_PATH".

6.

Bei einem nativen ELF-Linker werden die Verzeichnisse in "DT_RUNPATH" oder "DT_RPATH" einer gemeinsam genutzten Bibliothek nach gemeinsam genutzten Bibliotheken durchsucht.Die Einträge "DT_RPATH" werden ignoriert, wenn Einträge "DT_RUNPATH" vorhanden sind.

7.

Die Standardverzeichnisse normalerweise / lib und / usr / lib .

8.

Bei einem nativen Linker in einem ELF-System, wenn die Datei /etc/ld.so.conf existiert, die Liste der in dieser Datei gefundenen Verzeichnisse.

Wenn die erforderliche gemeinsam genutzte Bibliothek nicht gefunden wird, gibt der Linker eine Warnung aus und fährt mit dem Link fort.

-geschützt

- teilbar

Erstellen Sie eine gemeinsam genutzte Bibliothek. Dies wird derzeit nur auf ELF-, XCOFF- und SunOS-Plattformen unterstützt. 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

Diese Option sagt ausld um die allgemeinen Symbole nach Größe zu sortieren, wenn sie in den entsprechenden Ausgabeabschnitten platziert werden. Zuerst kommen alle Ein-Byte-Symbole, dann alle Zwei-Byte, dann alle Vier-Byte und dann alles andere. Dadurch werden Lücken zwischen Symbolen aufgrund von Ausrichtungsbedingungen verhindert.

--split-by-file Größe

Ähnlich zu--split-by-reloc erstellt jedoch für jede Eingabedatei einen neuen Ausgabeabschnitt Größe ist erreicht. Größe Die Standardeinstellung ist 1, wenn nicht angegeben.

--split-by-reloc Anzahl

Versucht, zusätzliche Abschnitte in der Ausgabedatei zu erstellen, sodass kein einzelner Ausgabeabschnitt in der Datei mehr als enthält Anzahl Umzüge. Dies ist nützlich, wenn Sie große verschiebbare Dateien zum Herunterladen in bestimmte Echtzeit-Kernel mit dem COFF-Objektdateiformat erstellen. da COFF nicht mehr als 65535 Umzüge in einem einzigen Abschnitt darstellen können. Beachten Sie, dass dies nicht mit Objektdateiformaten funktionieren kann, die keine beliebigen Abschnitte unterstützen. Der Linker teilt die einzelnen Eingabeabschnitte nicht für die Neuverteilung auf, wenn also ein einzelner Eingabeabschnitt mehr als enthält Anzahl Verschiebungen in einem Ausgabeabschnitt enthalten so viele Verschiebungen. Anzahl Der Standardwert ist 32768.

--Statistiken

Berechnen und Anzeigen von Statistiken über den Betrieb des Linkers, z. B. Ausführungszeit und Speicherauslastung.

--traditionelles Format

Für einige Ziele ist die Ausgabe vonld unterscheidet sich in einigen Punkten von der Ausgabe eines vorhandenen Linkers. Dieser Schalter fordert anld stattdessen das traditionelle Format verwenden.

Zum Beispiel auf SunOS,ld kombiniert doppelte Einträge in der Symbolzeichenfolgetabelle. Dadurch kann die Größe einer Ausgabedatei mit vollständigen Debugging-Informationen um über 30 Prozent reduziert werden. Leider kann das SunOS-Programm "dbx" das resultierende Programm nicht lesen ("gdb" hat keine Probleme). Das--traditionelles Format Schalter erzähltld doppelte Einträge nicht kombinieren.

--sektion-start Abteilungsname = org

Suchen Sie einen Abschnitt in der Ausgabedatei an der von. Angegebenen absoluten Adresse org . Sie können diese Option so oft wie nötig verwenden, um mehrere Abschnitte in der Befehlszeile zu finden. org muss eine einzige hexadezimale Ganzzahl sein; Um die Kompatibilität mit anderen Linkern zu gewährleisten, können Sie die führenden Zeilen weglassen0x normalerweise mit hexadezimalen Werten verknüpft. Hinweis: Es sollte kein Leerzeichen dazwischen sein Abteilungsname , das Gleichheitszeichen (``=''), und org .

-Tbss org

-Data org

-Text org

Benutzen org als Startadresse für --- bzw. --- das Segment "bss", "data" oder "text" der Ausgabedatei. org muss eine einzige hexadezimale Ganzzahl sein; Um die Kompatibilität mit anderen Linkern zu gewährleisten, können Sie die führenden Zeilen weglassen0x normalerweise mit hexadezimalen Werten verknüpft.

--dll-verbose

--verbose

Zeigt die Versionsnummer für anld und liste die unterstützten Linker-Emulationen auf. Anzeige, welche Eingabedateien geöffnet werden können und welche nicht. Zeigt das Linker-Skript an, das vom Linker verwendet wird.

--version-script = Versions-Skriptdatei

Geben Sie den Namen eines Versionsskripts für den Linker an. Dies wird normalerweise beim Erstellen von gemeinsam genutzten Bibliotheken verwendet, um zusätzliche Informationen zur Versionshierarchie der zu erstellenden Bibliothek anzugeben. Diese Option ist nur auf ELF-Plattformen sinnvoll, die gemeinsam genutzte Bibliotheken unterstützen.

--warn-common

Warnen, wenn ein gemeinsames Symbol mit einem anderen gemeinsamen Symbol oder mit einer Symboldefinition kombiniert wird. Unix-Linker erlauben diese etwas schlampige Praxis, Linker auf anderen Betriebssystemen jedoch nicht. Mit dieser Option können Sie mögliche Probleme durch das Kombinieren von globalen Symbolen finden. Leider verwenden einige C-Bibliotheken diese Vorgehensweise, daher werden möglicherweise Warnungen zu Symbolen in den Bibliotheken sowie in Ihren Programmen angezeigt.

Es gibt drei Arten von globalen Symbolen, die hier anhand von C-Beispielen veranschaulicht werden:

int i = 1;

Eine Definition, die in den initialisierten Datenabschnitt der Ausgabedatei geht.

extern int i;

Eine undefinierte Referenz, die keinen Speicherplatz belegt. Es muss irgendwo eine Definition oder ein gemeinsames Symbol für die Variable geben.

int i;

Ein allgemeines Symbol. Wenn für eine Variable nur (ein oder mehrere) gemeinsame Symbole vorhanden sind, wird sie in den nicht initialisierten Datenbereich der Ausgabedatei verschoben. Der Linker führt mehrere gemeinsame Symbole für dieselbe Variable zu einem einzigen Symbol zusammen. Wenn sie unterschiedliche Größen haben, wird die größte Größe ausgewählt. Der Linker verwandelt ein gemeinsames Symbol in eine Deklaration, wenn dieselbe Variable definiert ist.

Das--warn-common Option kann fünf Arten von Warnungen erzeugen. Jede Warnung besteht aus einem Paar von Zeilen: Die erste beschreibt das gerade angetroffene Symbol und die zweite beschreibt das zuvor identifizierte Symbol mit demselben Namen. Eines oder beide der beiden Symbole ist ein gemeinsames Symbol.

1.

Aus einem gemeinsamen Symbol eine Referenz machen, weil das Symbol bereits definiert ist.

(

): Warnung: häufig bei `'per Definition überschrieben (
): Warnung: hier definiert

2.

Verwandeln eines allgemeinen Symbols in eine Referenz, da eine spätere Definition für das Symbol gefunden wird. Dies ist derselbe wie im vorherigen Fall, nur dass die Symbole in einer anderen Reihenfolge vorkommen.

(

): Warnung: Definition von `übertreibend (
): Warnung: Common ist hier

3.

Ein gemeinsames Symbol mit einem vorherigen gemeinsamen Symbol gleicher Größe zusammenführen.

(

): Warnung: mehrere gemeinsame von `' (
): Warnung: Vorheriges Common ist hier

4.

Zusammenführen eines gemeinsamen Symbols mit einem vorherigen größeren gemeinsamen Symbol.

(

): Warnung: häufig bei `'von größeren gemeinsamen überschrieben (
): Warnung: Größer ist hier

5.

Zusammenführen eines gemeinsamen Symbols mit einem vorherigen kleineren gemeinsamen Symbol. Dies ist derselbe wie im vorherigen Fall, nur dass die Symbole in einer anderen Reihenfolge vorkommen.

(

): Warnung: häufig bei `'kleinere übertreffen (
): Warnung: kleinerer ist hier

--warn-Konstruktoren

Warnen, wenn globale Konstruktoren verwendet werden. Dies ist nur für einige Objektdateiformate nützlich. Bei Formaten wie COFF oder ELF kann der Linker die Verwendung globaler Konstruktoren nicht erkennen.

--warn-multiple-gp

Warnen, wenn in der Ausgabedatei mehrere globale Zeigerwerte erforderlich sind. Dies ist nur für bestimmte Prozessoren sinnvoll, beispielsweise für das Alpha. Einige Prozessoren fügen speziell Konstanten mit hohem Wert in einen speziellen Abschnitt ein. Ein spezielles Register (der globale Zeiger) zeigt in die Mitte dieses Abschnitts, sodass Konstanten über einen relativen Basisregister-Adressierungsmodus effizient geladen werden können. Da der Versatz im relativen Modus des Basisregisters fest und relativ klein ist (z. B. 16 Bits), begrenzt dies die maximale Größe des konstanten Pools. Daher ist es in großen Programmen oft notwendig, mehrere globale Zeigerwerte zu verwenden, um alle möglichen Konstanten adressieren zu können. Diese Option bewirkt, dass in diesem Fall eine Warnung ausgegeben wird.

- einmal warnen

Warnen Sie nur einmal für jedes undefinierte Symbol und nicht einmal pro Modul, das darauf verweist.

--warn-section-align

Warnen, wenn die Adresse eines Ausgabeabschnitts aufgrund der Ausrichtung geändert wird. Normalerweise wird die Ausrichtung durch einen Eingabeabschnitt festgelegt. Die Adresse wird nur geändert, wenn sie nicht explizit angegeben ist. Das heißt, wenn der Befehl "SECTIONS" keine Startadresse für den Abschnitt angibt.

- Whole-Archiv

Für jedes Archiv in der Befehlszeile nach dem- Whole-Archiv Option, schließen Sie jede Objektdatei im Archiv in den Link ein, anstatt das Archiv nach den erforderlichen Objektdateien zu durchsuchen. Dies wird normalerweise verwendet, um eine Archivdatei in eine gemeinsam genutzte Bibliothek umzuwandeln, sodass jedes Objekt in die resultierende gemeinsam genutzte Bibliothek aufgenommen werden muss. Diese Option kann mehr als einmal verwendet werden.

Zwei Hinweise zur Verwendung dieser Option von gcc: Erstens kennt gcc diese Option nicht, daher müssen Sie diese verwenden-Wl, gesamtes Archiv. Zweitens vergessen Sie nicht zu verwenden-Wl, -nicht ganze Archivnach Ihrer Liste der Archive, da gcc Ihrem Link eine eigene Liste von Archiven hin