CL: Starten des Linkers
Aktualisiert: November 2007
CL startet den Linker automatisch nach dem Kompilieren, sofern nicht die /c-Option verwendet wird. CL übergibt dem Linker die Namen der OBJ-Dateien, die während des Kompilierens erstellt wurden, und die Namen aller anderen in der Befehlszeile angegebenen Dateien. Der Linker verwendet die Optionen, die in der Umgebungsvariablen LINK aufgeführt sind. Mit der /link-Option können in der CL-Befehlszeile Optionen für den Linker angegeben werden. Optionen, die der /link-Option folgen, überschreiben die Optionen in der Umgebungsvariablen LINK. Die Optionen in der nachfolgenden Tabelle unterdrücken das Verknüpfen.
Option |
Beschreibung |
---|---|
/c |
Kompilieren ohne Verknüpfen |
/E, /EP, /P |
Vorverarbeiten ohne Kompilieren und Verknüpfen |
/Zg |
Funktionsprototypen generieren |
/Zs |
Syntax prüfen |
Weitere Details zum Verknüpfen finden Sie im Abschnitt Linkeroptionen.
Beispiel
Angenommen, Sie kompilieren drei C-Quelldateien: MAIN.c, MOD1.c und MOD2.c. Jede Datei enthält einen Aufruf einer in einer anderen Datei definierten Funktion:
MAIN.c ruft die Funktion func1 in MOD1.c und die Funktion func2 in MOD2.c auf.
MOD1.c ruft die Standardbibliotheksfunktionen printf_s und scanf_s auf.
MOD2.c ruft die Grafikfunktionen myline und mycircle auf, die in der Bibliothek MYGRAPH.lib definiert sind.
Zum Erstellen dieses Programms kompilieren Sie mit folgender Befehlszeile:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL kompiliert zunächst die C-Quelldateien und erstellt die Objektdateien MAIN.obj, MOD1.obj und MOD2.obj. Der Compiler legt den Namen der Standardbibliothek in jeder OBJ-Datei ab. Näheres dazu finden Sie unter Laufzeitbibliothek verwenden.
CL übergibt die Namen der OBJ-Dateien zusammen mit dem Namen MYGRAPH.lib an den Linker. Der Linker löst die externen Verweise folgendermaßen auf:
In MAIN.obj wird der Verweis auf func1 mit der Definition aus MOD1.obj und der Verweis auf func2 mit der Definition aus MOD2.obj aufgelöst.
In MOD1.obj werden die Verweise auf printf_s und scanf_s mit den Definitionen in der Bibliothek aufgelöst, deren Namen der Linker in MOD1.obj vorfindet.
In MOD2.obj werden die Verweise auf myline und mycircle mit den Definitionen aus MYGRAPH.lib aufgelöst.