Linken

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Delphi-Compiler


Projekt > Optionen > Erzeugen > Delphi-Compiler > Linken

Auf dieser Seite legen Sie die Linker-Optionen für Ihre Anwendung fest.

Achtung: Nicht alle im Folgenden beschriebenen Optionen stehen für alle Projekttypen zur Verfügung.
Optionen Beschreibung

Ziel, Übernehmen, Speichern

Siehe Optionen für das Ziel.

Gemeinsame Elemente

Siehe Gemeinsame Elemente auf den Projektoptionsseiten.


Optionen für das Linken Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben).

Datenausführungsverhinderung kompatibel

Gibt an, ob das ausführbare Image mit der Windows-Datenausführungsverhinderung kompatibel ist.
Vorgabe = True

‑‑nx-compat
‑‑nx-compat:off

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Debug-Informationen

Erzeugt für jede Prozedur eine Tabelle mit Zeilennummern, in der Adressen des Objektcodes den Zeilennummern im Quelltext zugeordnet sind. Entspricht der Delphi-Compiler-Direktive {$D+} und der Option -V für DCC32.

Vorgabe = False

‑$D+
‑$D‑

Große Adressen aktivieren

Gibt an, ob das Objekt Adressen unterstützt, die größer als zwei Gigabyte sind.
Vorgabe = False

‑‑large-address-aware
‑‑large-address-aware:off

  • 32‑Bit-Windows

EXE-Beschreibung

Geben Sie eine Beschreibung Ihrer EXE-Datei ein. Dieses Feld kann einen String mit bis zu 255 Zeichen enthalten. Der String wird mit der Option $D gelinkt und in die ausführbare Datei eingebunden. Er wird meistens für Copyright-Informationen verwendet. Copyright-Informationen können auch in die Versionsinfo–Datei eingefügt werden. Diese Option ist nur für gemeinsam genutzte Objekte und für ausführbare Anwendungsdateien verwendbar, nicht für Packages.

‑‑description

Konsolenanwendung erzeugen

Veranlasst den Linker in der EXE-Anwendungsdatei ein Flag zu setzen, das eine Konsolenanwendung kennzeichnet.

Vorgabe = False

‑CC

Image-Basisadresse

Gibt die Adresse an, an der die ausführbare Datei in den Speicher geladen werden soll. Dieser Wert wird üblicherweise nur beim Compilieren von DLLs geändert.

Vorgabe = 400000

‑K

Mit externen Debug-Symbolen

Aktivieren Sie diese Option, wenn Sie extern oder geräteübergreifend debuggen. Erzeugt die externe Debug-Symboldatei (.rsm) für das Projekt.

Vorgabe = False

‑VR

  • 32‑Bit-Windows
  • 64‑Bit-Windows
  • macOS 
  • iOS-Simulator

MAP-Datei

Der Linker kann eine Map-Datei mit den folgenden allgemeinen Segmentinformationen erzeugen: Liste der Segmente, Programmstartadresse und eventuelle Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden.

Vorgabe = Aus

  • Aus: Erstellt keine MAP-Datei. Dies ist die Vorgabe.
  • Segmente: Erzeugt eine MAP-Datei mit folgendem Inhalt: Liste der Segmente, Programmstartadresse und eventuelle Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden.
  • Publics: Erzeugt eine MAP-Datei mit folgendem Inhalt: Liste der Segmente, Programmstartadresse und eventuelle Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden. Außerdem wird eine alphabetisch sortierte Liste der public-Symbole generiert.
  • Detailliert: Erzeugt eine MAP-Datei mit folgendem Inhalt: Liste der Segmente, Programmstartadresse und eventuelle Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden, eine alphabetisch sortierte Liste der public-Symbole und zusätzlich eine detaillierte Liste der Segmentzuordnungen. Diese umfasst Segmentadresse, Länge in Byte, Segmentname, Gruppe und Modulinformationen. Erzeugt auch eine Datei mit Ressourcenstrings.

‑GS
‑GP
‑GD

  • 32‑Bit-Windows
  • 64‑Bit-Windows
  • macOS 
  • iOS-Simulator

MAP-Datei ARM

Der Linker kann eine Map-Datei mit den folgenden allgemeinen Segmentinformationen erzeugen: Liste der Segmente, Programmstartadresse und eventuelle Warn- und Fehlermeldungen, die während des Linkens erzeugt wurden.

Vorgabe = Aus

  • Aus: Erstellt keine MAP-Datei. Dies ist die Vorgabe.
  • Ein: Erstellt eine MAP-Datei.
  • MAP-Datei und DRC-Datei: Erstellt eine MAP-Datei und eine DRC-Datei.

‑G
‑GD

  • iOS-Gerät (32-Bit und 64 Bit)

Maximale Stack-Größe

Gibt die maximale Größe des Stack an (nur bei ausführbaren Projektdateien verwendbar; für DLLs deaktiviert). Einstellungen zur Speichergröße können auch im Quelltext mit der Compiler-Direktive $M vorgenommen werden.

Vorgabe = 1048576

Niedrigste unterstützte iOS-Version

Die niedrigste iOS-Version, die Ihre Anwendung unterstützt. Wenn Sie Ihre Anwendung an den AppStore übermitteln, wird dieser Wert zum Filtern verwendet.

Vorgabe = 8.0

‑‑ios-version-min

  • iOS-Gerät (32-Bit und 64 Bit)

Minimale Stack-Größe

Gibt die minimale Größe des Stack an (nur bei ausführbaren Projektdateien verwendbar; für DLLs deaktiviert). Einstellungen zur Speichergröße können auch im Quelltext mit der Compiler-Direktive $M vorgenommen werden.

Vorgabe = 16384

An den LD-Linker übergebene Optionen

Weitere Optionen für den LD-Linker.

‑‑linker-option

  • iOS-Gerät (32-Bit und 64 Bit)

Ausgabe-Ressourcenstring DRC-Datei

Erstellt eine DRC-Datei, die die Ressourcenstrings für das aktuelle Projekt enthält. Weitere Informationen finden Sie unter Sprachen zu einem Projekt hinzufügen.

‑‑drc

Debug-Informationen in separate TDS-Datei ausgeben

Speichert Debug-Informationen im C++-Stil in einer separaten .tds-Datei mit demselben Namen wie das Projekt. Diese TDS-Debug-Datei wird beim Compilieren erzeugt und enthält Informationen, die vom Debugger verwendet werden. Wenn die Debug-Informationen direkt in der PE-Datei erzeugt werden sollen, setzen Sie die Option Debug-Informationen auf True.

Beim Laden eines C++-Moduls untersucht der Debugger den Zeitstempel der zugehörigen TDS-Datei. Wenn der Zeitstempel der TDS-Datei fünf oder mehr Sekunden älter als der des Moduls ist, betrachtet der Debugger sie als veraltet und verwendet sie nicht. Zusätzlich meldet das IDE-Ereignisprotokoll, dass keine Debug-Informationen für das Modul gefunden wurden. Zur Vermeidung des Problems einer fehlenden TDS-Datei führen Sie einen der folgenden Schritte aus:

  • Stellen Sie sicher, dass all Ihre Build-Prozesse (IDE und Befehlszeile) und -Konfigurationen hinsichtlich der Option Debug-Informationen in separate TDS-Datei ausgeben konsistent sind.
  • Löschen Sie die zugehörige TDS-Datei eines Moduls, wenn Sie das Modul neu erzeugen.

Vorgabe = False

‑VT ‑VN

  • 32‑Bit-Windows

Basisadresse für relozierbare Images festlegen

Steuert die Standardladeadresse für eine Anwendung, DLL oder ein Package. Das Zahlenargument muss:

  • Ein 32-Bit-Integerwert sein, der die Image-Basisadresse angibt.
  • Gleich oder größer sein als $00010000; die niedrigwertigen 16 Bit des Arguments werden ignoriert oder sollten null sein.
  • Ein Vielfaches von 64 K sein (die entsprechende Hexadezimalzahl muss also mit vier Nullen enden); ist das nicht der Fall, rundet der Compiler die Zahl auf das nächstkleinere Vielfache ab und gibt eine Meldung aus.

Diese Option entspricht der Delphi-Compiler-Direktive {$IMAGEBASE}.

Vorgabe = 0

‑K

Zusätzliche PE-Header-Flags setzen

Legt weitere Flags für den PE-Header (Portable Executable) für Ihre Anwendung fest.
Setzt das angegebene Feld (oder die Felder) auf die angegebenen Werte. Diese Option entspricht der Delphi-Compiler-Direktive {$SETPEFLAGS xxx}.

Vorgabe = 0

‑‑peflags

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Zusätzliche optionale PE-Header-Flags setzen

Legt weitere Header-Felder in dem optionalen Header der PE-Datei (Portable Executable) fest. Einzelheiten finden Sie bei der in der Datei WINNT.h definierten Struktur IMAGE_OPTIONAL_HEADER.

Vorgabe = 0

‑‑peoptflags

  • 32‑Bit-Windows
  • 64‑Bit-Windows

BS-Versionsfelder in PE-Header als <Haupt>.<Neben> setzen

Legt die Version des Betriebssystems fest, die zur Ausführung des Image erforderlich ist. Setzt das Feld MajorOperatingSystemVersion in dem optionalen Header der PE-Datei (Portable Executable) auf den Wert, den Sie in <Haupt> angeben, und setzt das Feld MinorOperatingSystemVersion auf den Wert, den Sie in <Neben> angeben. Beispiel: Wenn Sie in dieses Feld 5.0 eingeben, wird Windows 2000 als BS-Version in dem optionalen Header der PE-Datei festgelegt. Die Felder sind in der Datei WINNT.h unter IMAGE_OPTIONAL_HEADER festgelegt.

Diese Option entspricht der {$SETPEOSVERSION}-Delphi-Compiler-Direktive.

Vorgabe = 5.0

‑‑peosversion

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Untersystem-Versionsfelder in PE-Header als <Haupt>.<Neben> setzen

Legt das Windows-Untersystem für eine PE-Datei (Portable Executable) fest, das zur Ausführung des Image erforderlich ist. Setzt das Feld MajorSubsystemVersion in dem optionalen Header der PE-Datei auf den Wert, den Sie in <Haupt> angeben, und setzt das Feld MinorSubsystemVersion auf den Wert, den Sie in <Neben> angeben.

Diese Option entspricht der {$SETPESUBSYSVERSION}-Delphi-Compiler-Direktive.

Vorgabe = 5.0
Die folgenden Werte sind für das Untersystem in der Datei WINNT.h definiert:

  • IMAGE_SUBSYSTEM_UNKNOWN = 0: Unbekanntes Untersystem
  • IMAGE_SUBSYSTEM_NATIVE = 1: Wird für Gerätetreiber und native Windows NT-Prozesse verwendet.
  • IMAGE_SUBSYSTEM_WINDOWS_GUI = 2: Das Image wird im GUI-Untersystem (grafische Benutzeroberfläche) von Windows ausgeführt.
  • IMAGE_SUBSYSTEM_WINDOWS_CUI = 3: Das Image wird im Windows-Zeichen-Untersystem ausgeführt.
  • IMAGE_SUBSYSTEM_POSIX_CUI = 7: Das Image wird im Posix-Zeichen-Untersystem ausgeführt.

‑‑pesubsysversion

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Benutzer-Versionsfelder in PE-Header als <Haupt>.<Neben> setzen

Gibt die Versionsnummer Ihrer Anwendung an. Setzt das Feld MajorVersion in dem optionalen Header der PE-Datei (Portable Executable) auf den Wert, den Sie in <Haupt> angeben, und setzt das Feld MinorVersion auf den Wert, den Sie in <Neben> angeben. Beispiel: Wenn Sie in dieses Feld 8.11 eingeben, wird 8.11 als Anwendungsversion in dem optionalen Header der PE-Datei festgelegt. Die Felder sind in der Datei WINNT.h unter IMAGE_OPTIONAL_HEADER festgelegt.

Diese Option entspricht der {$SETPEUSERVERSION}-Delphi-Compiler-Direktive.

Vorgabe = 0

‑‑peuserversion

  • 32‑Bit-Windows
  • 64‑Bit-Windows

ASLR (Address Space Layout Randomization) unterstützen

Legt fest, ob die DLL oder das ausführbare Image beim Laden mithilfe von ASLR (Address Space Layout Randomization) zufällig neu basiert werden kann.
Vorgabe = True

‑‑dynamic-base
‑‑dynamic-base:off

  • 32‑Bit-Windows
  • 64‑Bit-Windows

High-Entropy für 64-Bit-ASLR (Address Space Layout Randomization) unterstützen

Legt fest, ob die DLL oder das ausführbare Image High Entropy (64 Bit) ASLR (Address Space Layout Randomization) unterstützt.
Vorgabe = True

Hinweis: Dieses Flag ist nur unter Win64 verfügbar.

‑‑high-entropy-va
‑‑high-entropy-va:off

  • 64‑Bit-Windows

Terminal-Server

Legt fest, dass die App für den Einsatz in einer Mehrbenutzerumgebung konzipiert ist.
Vorgabe = True

‑‑ts-aware
‑‑ts-aware:off

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Siehe auch