ILINK64.EXE: Der inkrementelle 64-Bit-Linker
Nach oben zu Befehlszeilenhilfsprogramme - Index
ILINK64.EXE ist die Befehlszeilenoberfläche von ILINK64, der C++-Linker für 64-Bit-Windows.
Inhaltsverzeichnis
Befehlszeilensyntax
ILINK64 <objfiles>, <exefile>, <mapfile>, <libfiles>, <deffile>, <resfiles>
Befehlszeilenelemente
Der 64-Bit-Linker kann auch eine Konfigurationsdatei mit dem Namen ILINK64.CFG für Optionen verwenden, die Sie normalerweise in der Befehlszeile eingeben würden.
Element | Beschreibung |
---|---|
|
Linker-Optionen, die die Arbeitsweise des Linkers steuern. Über Optionen wird beispielsweise festgelegt, ob eine EXE- oder DLL-Datei erzeugt werden soll. Linker-Optionen muss entweder ein Schrägstrich ( |
|
Ein Initialisierungsmodul für ausführbare Programme oder DLLs, das die Reihenfolge der verschiedenen Programmsegmente festlegt. Wenn nicht das richtige Initialisierungsmodul gelinkt wurde, wird im Normalfall eine lange Liste mit Fehlermeldungen ausgegeben, die beispielsweise darüber informieren, dass bestimmte Bezeichner nicht aufgelöst wurden oder kein Stack angelegt wurde. |
|
Die Objektdateien ( |
|
Der Name, den Sie einer ausführbaren Datei (EXE oder DLL) geben möchten. Wenn Sie für die ausführbare Datei keinen Namen angeben, leitet ILINK64 den Namen der ausführbaren Datei ab, indem an den ersten aufgeführten Objektdateinamen die Endung .EXE oder .DLL angefügt wird. (Der Linker setzt die Erweiterung .EXE voraus bzw. fügt sie an, wenn keine vorhanden ist. Ebenso fügt er an DLLs die Endung .DLL an, wenn diese nicht existiert.) |
|
Der Name, den Sie der Map-Datei geben möchten. Wird kein Name angegeben, erhält die Datei den Namen der erzeugten ausführbaren Datei (aber mit der Erweiterung .MAP). (Diese Erweiterung wird vom Linker auch automatisch vergeben.) |
|
Die Bibliotheksdateien (
|
|
Die Datei zur Moduldefinition für eine ausführbare Windows-Datei. Wenn Sie keine Moduldefinitionsdatei (.DEF) angeben und die Option |
|
Eine Liste von .RES-Dateien (compilierte Ressourcendateien), die in das ausführbare Programm eingebunden werden sollen. (Der Linker vergibt standardmäßig die Erweiterung .RES, wenn keine Erweiterung vorhanden ist.) |
Befehlszeilenhilfe
Um die Befehlszeilenhilfe für ILINK64 anzuzeigen, geben Sie Folgendes ein:
ilink64
Der folgende Bildschirm wird angezeigt:
Turbo Incremental Link 6.40 Copyright (c) 1997-2012 Embarcadero Technologies, Inc. Syntax: ILINK objfiles, exefile, mapfile, libfiles, deffile, resfiles @xxxx indicates use response file xxxx General Options: -Af:nnnn Specify file alignment -C Clear state before linking -Ao:nnnn Specify object alignment -wxxx Warning control -ax Specify application type -Enn Max number of errors -b:xxxx Specify image base addr -r Verbose linking -Txx Specify output file type -q Suppress banner -H:xxxx Specify heap reserve size -c Case sensitive linking -Hc:xxxx Specify heap commit size -v Full debug information -S:xxxx Specify stack reserve size -Gn No state files -Sc:xxxx Specify stack commit size -Gi Generate import library -Vd.d Specify Windows version -GD Generate .DRC file -Dstring Set image description Map File Control: -Vd.d Specify subsystem version -M Map with mangled names -Ud.d Specify image user version -m Map file with publics -GC Specify image comment str -s Detailed segment map -GF Set image flags -x No map -Gl Static package Paths: -Gpd Design time only package -I Intermediate output dir -Gpr Runtime only package -L Specify library search paths -GS Set section flags -j Specify object search paths -Gt Fast TLS Image Control: -Gz Do image checksum -d Delay load a .DLL -Rr Replace resources
Befehlszeilenoptionen
Befehlszeilenoptionen von ILINK64.EXE berücksichtigen die Groß-/Kleinschreibung.
ILINK64.EXE unterstützt die in der folgenden Tabelle aufgeführten Befehlszeilenoptionen:
Hinweis:
ilink64
-Befehlszeilenoptionen können auch mit einem vorangestellten-
anstatt des Schrägstrichs (/
) verwendet werden. (Z.B. die Option/Tpe
kann auch als-Tpe
geschrieben werden).
Linker-Optionen
Option | Beschreibung |
---|---|
|
Verwendet die Response-Datei |
|
Legt die Dateiausrichtung fest; geben Sie |
|
Legt die Objektausrichtung fest; geben Sie |
|
Erzeugt eine 64 Bit-Windows-Anwendung. |
|
Erzeugt einen 64 Bit-Windows-Gerätetreiber. |
|
Erzeugt eine 64-Bit-Windows-Konsolenanwendung. |
|
Legt die Image-Basisadresse fest und entfernt die Adressverschiebungstabelle. |
|
Legt die Image-Basisadresse fest und behält die DLL-Adressverschiebungstabelle bei. Nachfolgende Objekte werden an den linearen Adressgrenzen bei 64 K ausgerichtet. Verbessert die Ladezeit und die Laufzeitgeschwindigkeit.
Für die Erzeugung von DLLs empfohlen. |
|
Aktualisiert die Statusdateien des Linkers. Löscht vor jedem Linken alle Statusdateien, erzeugt dann die Dateien neu und fährt mit dem Linken fort. |
|
Berücksichtigt die Schreibweise bei Symbolen, die als "external" oder "public" deklariert sind. |
|
Lädt eine DLL verzögert. Die DLL wird erst dann geladen und initialisiert, wenn tatsächlich ein Eintrittspunkt in der DLL aufgerufen wird. |
|
Speichert die angegebene Beschreibung im PE-Image. |
|
Legt die maximale Fehleranzahl fest. |
|
Fügt einen Kommentar-String in das Image direkt nach der Objekttabelle im PE-Datei-Header ein. Sie können mehrere Strings angeben. |
|
Erzeugt eine mit Delphi kompatible RC-Datei (DRC-Datei). |
|
Setzt Image-Flags. Folgende xxxx-Flags sind möglich:
|
|
Behält bei Fehlern die Ausgabedateien bei. |
|
Erzeugt eine .LIB-Datei. |
|
Erzeugt nur Entwurfszeit-Packages. Voreinstellung: das Package funktioniert sowohl zur Entwurfs- als auch zur Laufzeit. |
|
Erzeugt nur Laufzeit-Packages. Voreinstellung: das Package funktioniert sowohl zur Entwurfs- als auch zur Laufzeit. |
|
Erzeugt keine Statusdateien (deaktiviert das inkrementelle Linken). Nachfolgende Link-Vorgänge dauern genauso lange wie der erste. Vorgabe ist aus. |
|
Legt Abschnitts-Flags fest. Fügt die angegebenen Flags den für einen gegebenen Abschnitt vorhandenen Flags hinzu, kann aber die Standard-Flags eines Abschnitts nicht entfernen. Abschnitts-Flags sind: Beispiel -Gs:.rsrc=W Diese Option bewirkt, dass in den RSRC-Abschnitt geschrieben werden kann. |
|
Berechnet die Prüfsumme des Ziels und fügt das Ergebnis in den PE-Header ein. Wird von NT Kernel-Treibern und System-DLLs verwendet. |
|
Legt die Größe der Heap-Reserve für eine Anwendung als Hexadezimal- oder Dezimalwert fest. Der Minimalwert ist 0. Diese Option überschreibt die HEAPSIZE-Einstellung in einer Moduldefinitionsdatei. |
|
Legt die Heap-Übergabegröße für eine Anwendung fest. |
|
Legt das Verzeichnis für Zwischenausgabedateien fest. Bezieht sich auf die Linker-Statusdateien; die Map-Debug-Datei und die Debug-Symboldateien werden aber in demselben Verzeichnis wie das Ausgabe-Image gespeichert, sofern nicht anders angegeben für die Map-Debug-Datei. |
|
Legt die Objektsuchpfade fest. Beispiel ILINK64 /jc:\myobjs;.\objs splash ^ .\common\logo,,,utils logolib Dieser Befehl weist den Linker an, zuerst das aktuelle Verzeichnis nach SPLASH.OBJ zu durchsuchen. Wenn die Datei im aktuellen Verzeichnis nicht gefunden wird, sucht der Linker im Verzeichnis C:\MYOBJS und dann im Verzeichnis .\OBJs. Der Linker verwendet die Objektsuchpfade jedoch nicht, um die Datei LOGO.OBJ zu suchen, da dieser Datei ein expliziter Pfad zugewiesen wurde. |
|
Legt den zu verwendenden Bibliothekssuchpfad fest, wenn kein expliziter Pfad für die LIB-Datei angegeben ist, und der Linker die LIB-Datei nicht im aktuellen Verzeichnis finden kann. ILINK64 /Lc:\mylibs;.\libs splash ^ .\common\logo,,,utils logolib Dieser Befehl weist den Linker an, zuerst das aktuelle Verzeichnis nach SPLASH.LIB zu durchsuchen. Wenn die Datei im aktuellen Verzeichnis nicht gefunden wird, sucht der Linker im Verzeichnis C:\MYLIBS und dann im Verzeichnis .\LIBs. Der Linker verwendet die Bibliothekssuchpfade jedoch nicht, um die Datei LOGO.LIB zu suchen, da dieser Datei ein expliziter Pfad zugewiesen wurde. |
|
Gibt die C++-Bezeichner in verkürzter Form - nicht mit ihrem vollständigen Namen - in der MAP-Datei aus. |
|
Die Segmentliste enthält pro Segment eine Zeile mit der Segment-Startadresse, der Segmentlänge, dem Segmentnamen und der Segmentklasse. Die public-Symbole werden in zwei Listen eingeteilt, die erste zeigt die Symbole in alphabetischer Reihenfolge, die zweite in aufsteigender Adressfolge. Symbole mit absoluten Adressen sind mit |
|
Unterdrückt das Befehlszeilen-Banner. |
|
Ausführliches Linken. Vorgabe ist aus. |
|
Ersetzt Ressourcen. |
|
Legt die Stack-Reservegröße für eine Anwendung fest. |
|
Legt die Stack-Übergabegröße für eine Anwendung fest. |
|
Erzeugt eine detaillierte Segmentzuordnungsdatei, indem der vom Linker erstellten Standard-MAP-Datei Details, wie Gruppen- und Modulinformationen, hinzugefügt werden. |
|
Erzeugt eine DLL-Datei für 64-Bit-Windows. |
|
Erzeugt eine EXE-Datei für 64-Bit-Windows. |
|
Erzeugt ein Package. |
|
Zeigt die zum Linken benötigte Zeit an. |
|
Erzeugt eine Debug-Symboldatei. |
|
Schaltet alle Warnungen ein. |
|
Deaktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Aktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Aktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Deaktiviert die Warnung: |
|
Unterdrückt die Erzeugung der Map-Debug-Datei. |
|
Standard-MAP-Dateien der Segmente (keine Linker-Option). Der Linker erzeugt standardmäßig eine MAP-Datei mit den folgenden allgemeinen Segmentinformationen:
|
Behandeln von Speichermangel-Fehlern bei ILINK64
Die IDE zeigt einfach die Meldung Schwerer Fehler: Zu wenig Arbeitsspeicher an, aber ILINK64 gibt weitere Informationen zu jedem Heap und zu dem verwendeten Speicherplatz aus.
Zum Beispiel:
Turbo Incremental Link64 6.40 Copyright (c) 1997-2012 Embarcadero Technologies,
Inc.
Overrun on linker heap: info
Linker Heaps
------------
info 0x12271000 0x12000000
code 0x0487d000 0x08000000
rodata 0x00159000 0x06000000
data 0x029bb000 0x08000000
bss 0x08000000 0x08000000
dwarf_aranges 0x00010000 0x00200000
dwarf_macinfo 0x00010000 0x00200000
dwarf_pubtypes 0x00275000 0x02000000
dwarf_info 0x04e57000 0x06000000
dwarf_abbrev 0x00040000 0x00200000
dwarf_line 0x0124d000 0x02000000
dwarf_str 0x036e0000 0x06000000
dwarf_loc 0x00070000 0x02000000
dwarf_ranges 0x00275000 0x02000000
Fatal: Out of memory
Mit -GH<Heapname>=size
können Sie größere Heaps zuweisen.
Um beispielsweise die Release-Version der DLL OWLNext library (OWLNext-Bibliothek) (EN) zu linken, verwenden interne C++Builder-Entwickler -GHinfo=0x12000000
.