ILINK32.EXE: Der inkrementelle 32-Bit-Linker
Nach oben zu Befehlszeilenhilfsprogramme - Index
ILINK32:EXE ist die Befehlszeilenoberfläche von ILINK32, der C++-Linker für 32-Bit-Windows.
Inhaltsverzeichnis
Befehlszeilensyntax
ILINK32 [@<respfile>][<options>] <startup> <myobjs>, [<exefile>],^ [<mapfile>], [<libraries>], [<deffile>], [<resfiles>]
Befehlszeilenelemente
Der Linker kann auch eine Konfigurationsdatei mit dem Namen ILINK32.CFG für Optionen verwenden, die normalerweise in der Befehlszeile eingegeben würden.
Element | Beschreibung |
---|---|
|
Eine Resp-Datei (Respond) ist eine ASCII-Datei, die Linker-Optionen und Dateinamen aufführt, die Sie normalerweise in der Befehlszeile eingeben würden. Indem Sie Optionen und Dateinamen in eine Resp-Datei aufnehmen, können Sie sich Tastatureingaben sparen, die zum Linken Ihrer Anwendung erforderlich sind. |
|
Linker-Optionen, die die Arbeitsweise des Linkers steuern. Über Optionen wird beispielsweise festgelegt, ob eine .EXE-, .BPL- oder .DLL-Datei erzeugt wird. 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 OBJ-Dateien, die Sie linken möchten. Geben Sie den Pfad an, wenn die Dateien sich nicht im aktuellen Verzeichnis befinden. (Der Linker fügt die Erweiterung .OBJ an, wenn keine Erweiterung vorhanden ist.) In diesen Abschnitt fügen Sie auch die Importbibliotheken für Delphi-Packages ( |
|
Der Name, den Sie einer ausführbaren Datei ( .EXE, .BPL oder .DLL) geben möchten. Wenn Sie für die ausführbare Datei keinen Namen angeben, leitet ILINK32 den Namen der ausführbaren Datei ab, indem an den ersten aufgeführten Objektdateinamen die Endung .EXE, .BPL 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. Analog wird die Erweiterung .BPL für Package-Dateien vergeben, wenn keine Erweiterung vorhanden ist.) |
|
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 beim Linken eingebunden werden sollen. Verwenden Sie kein Komma, um die Namen der aufgeführten Bibliotheken voneinander zu trennen. Wenn sich eine Datei nicht im aktuellen Verzeichnis oder im Suchpfad befindet (siehe dazu die Option
|
|
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.) |
Um die Hilfe für die Befehlszeile anzuzeigen, geben Sie Folgendes ein:
ilink32
Befehlszeilenoptionen
Befehlszeilenoptionen von ILINK32.EXE berücksichtigen die Groß-/Kleinschreibung.
ILINK32.EXE unterstützt die in der folgenden Tabelle aufgeführten Befehlszeilenoptionen:
Linker-Optionen
Option | Beschreibung |
---|---|
|
Verwendet die Response-Datei |
|
Legt die Dateiausrichtung fest (verwenden Sie für die Abwärtskompatibilitätsoption |
|
Legt die Dateiausrichtung fest; geben Sie |
|
Legt die Objektausrichtung fest; geben Sie |
|
Erzeugt eine 32 Bit-Windows-Anwendung. |
|
Erzeugt einen 32 Bit-Windows-Gerätetreiber. |
|
Erzeugt eine 32-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. |
|
Keine Statusdateien erzeugen (inkrementelles Linken deaktivieren) 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 TDS-Debug-Datei werden aber in demselben Verzeichnis wie das Ausgabe-Image gespeichert, sofern nicht anders angegeben. |
|
Legt die Objektsuchpfade fest. Beispiel
ILINK32 /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.
ILINK32 /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 32-Bit-Windows. |
|
Erzeugt eine EXE-Datei für 32-Bit-Windows. |
|
Erzeugt ein Package. |
|
Zeigt die zum Linken benötigte Zeit an. |
|
Erzeugt eine TDS-Debug-Datei. |
|
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-Datei. |
|
Standard-MAP-Dateien der Segmente (keine Linker-Option). Der Linker erzeugt standardmäßig eine MAP-Datei mit den folgenden allgemeinen Segmentinformationen:
|
Response-Dateien des Linkers
In Verbindung mit dem Befehlszeilen-Linker können Response-Dateien zum Festlegen der Link-Optionen verwendet werden.
Response-Dateien sind ASCII-Dateien. Sie enthalten Optionen und Dateinamen, die normalerweise in der Befehlszeile eingegeben werden. Zum einen können in Response-Dateien mehr Angaben untergebracht werden als in den Befehlszeilen der meisten Betriebssysteme, zum anderen müssen nicht ständig die gleichen Informationen eingegeben werden. Response-Dateien können die gleichen Informationen enthalten wie Konfigurationsdateien, sie können aber darüber hinaus Dateinamen enthalten.
Im Gegensatz zur Befehlszeile kann eine Response-Datei mehrere Zeilen lang sein. Um eine fortgesetzte Zeile zu kennzeichnen, geben Sie am Zeilenende ein Pluszeichen (+
) ein und setzen den Befehl in der nächsten Zeile fort. Beachten Sie dabei, dass das +
nicht als Fortsetzungszeichen für die Zeile angesehen wird, wenn die Zeile mit einer Option endet, die mit einem nachgestellten Pluszeichen aktiviert wird (wie etwa /v+
; verwenden Sie zum Fortsetzen der Zeile in diesem Fall /v+ +
).
Werden in einer Response-Datei die Bestandteile einer Befehlszeile durch eine neue Zeile getrennt (etwa .OBJ-Dateien von .LIB-Dateien), muss das in der Befehlszeile sonst verwendete Komma weggelassen werden.
Zum Beispiel:
/c c0ws+ myprog,myexe + mymap + mylib cws
Hier wurden die Kommas weggelassen, die für die gleiche Eingabe in der Befehlszeile erforderlich wären:
ILINK32 /c c0ws myprog,myexe,mymap,mylib cws
Um Response-Dateien zu verwenden:
- Geben Sie die Befehlszeilenoptionen und Dateinamen in eine ASCII-Textdatei ein, und speichern sie. Response-Dateien haben die Dateinamenserweiterung .REP.
- Typ:
ILINK32 @[<Pfad>]<RESP-DATEI.RSP>
- ein. Dabei steht
<RESP-DATEI.RSP>
für den Namen Ihrer Response-Datei.
Sie können mehrere Response-Dateien, wie im folgenden Beispiel gezeigt, angeben:
ilink32 /c @listobjs.rsp,myexe,mymap,@listlibs.rsp
Hinweis: Sie können Response-Dateien mit Kommentaren versehen, wenn Sie Semikola verwenden. Der Linker ignoriert jeglichen Text, der in einer Zeile nach einem Semikolon steht.
ILINK32 mit BCC32.EXE verwenden
Sie können Optionen und Dateien an ILINK32 mit dem Befehlszeilen-Compiler (BCC32.EXE) übergeben, indem Sie die Dateinamen in der Befehlszeile mit expliziten .OBJ- und .LIB-Erweiterungen eingeben. Diese Befehlszeile
BCC32 mainfile.obj sub1.obj mylib.lib
linkt MAINFILE.OBJ, SUB1.OBJ und MYLIB.LIB und erstellt die ausführbare Datei MAINFILE.EXE.
Hinweis: Standardmäßig startet BCC32 ILINK32 mit den Dateien C0W32.OBJ, CW32.LIB und IMPORT32.LIB (Initialisierungsmodul, Laufzeitbibliothek und Windows-Importbibliothek). Zusätzlich übergibt sowohl der Delphi- als auch der C++-Compiler immer an die Linker die Option
/c
(Linken unter Berücksichtigung der Groß-/Kleinschreibung).