ALink
Der Standard-Linker für Xbase++
Eigentlich verbringt ALink ein Schattendasein. Kaum einer weiss, wie er zu konfigurieren ist, PBuild erstellt die Linkscripte im Hintergrund und entsorgt sie auch schnell wieder.
Das am meisten verwendete Interface ist hier das Schlüsselwort LINK_FLAGS in einer PBuild Projektdatei.
Gesagt werden kann nur, dass ALink recht flott ist.
Syntax
ALINK [<options>] <OBJ> [<LIB>] [<RES>] [/OUT:<EXE>]
alternativ:
ALINK @<ScriptFile1> @<ScriptFile2> ...
<options> sind unter Schlüsselwörter gelistet.
<OBJ> sind durch Blank getrennte Namen der zu linkenden Dateien. Die Erweiterung .obj ist nicht zwingend erforderlich
[<LIB>] ist eine optionale Liste zu verwendender Bibliotheken
[<RES>] ist eine optionale Liste zu verwendender Resource-Dateien
[/OUT] siehe bei den Schlüsselwörtern
Schlüsselwörter
geläufige Schlüsselwörter
/PM:VIO|PM [<major>[.<minor>]]
/PMTYPE:VIO|PM [<major>[.<minor>]]
/SUBSYSTEM:CONSOLE|WINDOWS [<major>[.<minor>]]
Alle drei Varianten erlauben es, den Umgebungstyp eines Programms zu bestimmen. Für die Varianten VIO bzw. CONSOLE sind dann keine grafischen Elemente zulässig. Zu den grafischen Elementen gehören in diesem Zusammenhang auch Befehle, die auf solche Elemente zurückgreifen, wie z.B. ConfirmBox().
Mittels der Angabe von major.minor kann festgelegt werden, ab welcher Windows-Version (aufwärts) das erstellte Programm/DLL eingesetz werden kann.
/DE
/DEBUG
Dieser Schalter weist den Linker an, Zeilennummern und Informationen zu symbolischen Namen (wie z.B. STATIC oder LOCAL) in das resultierende Objekt aufzunehmen
/DLL
Dieser Schalter weist den Linker an, keine EXE, sondern eine DLL (Dynamic Link Library) zu erstellen.
weniger geläufige Schalter
/DEFAULTLIB:<filename>
An dieser Stelle ist die Dokumentation nicht eindeutig, ob hier nur eine oder mehrere Bibliotheken gelistet werden können, und wie - im Fall mehrere Bibliotheken - diese anzugeben sind.
/FORCE:MULTIPLE|UNRESOLVED
In zwei Fällen reagiert der Linker verstimmt: wenn in einem Programm Verknüpfungen (wie Funktionsaufrufe oder Klassen) nicht vorhanden sind, oder eine Funktion mehrfach vorhanden ist.
Mit dem Parameter MULTIPLE akzeptiert der Linker mehrfach vorkommende Symbole, wobei die Dokumentation keine Aussagen darüber macht, welche der Definitionen in diesem Fall verwendet werden.
Mit dem Parameter UNRESOLVED wird ein Programm auch dann erstellt, wenn ein Symbol nicht aufgelöst werden kann, wobei davon auszugehen ist, dass das Programm abgebrochen wird, wenn ein nicht definiertes Symbol angesprochen wird.
Der Schalter /FORCE kann mehrmals verwendet werden (wenn beide Parameter genutzt werden sollen).
/MAP[:<filename>]
Mit diesem Schalter wird ALink angewiesen, eine MAP des erstellten Programms bereitzustellen. Standardmässig heisst die MAP-Datei wie das Programm mit der Erweiterung MAP, ansonsten entsprechend der Vorgabe <filename>.
/NOL
/NOLOGO
Dieser Schalter unterdrückt das Logo von ALink beim Aufruf.
/OUT:<filename>
Mit diesem Schalter kann der Name für die zuerstellende Datei festgelegt werden. Ohne diesen Schalter heisst das Ergebnis sowie wie die erste gelistete Objekt-Datei.
/ST:<max>[,<min>]
/STACK:<max>[,<min>]
Mit diesem Schalter kann die Stack-Grösse beeinflusst werden. Die Angaben erfolgen in Bytes, wobei das Minimum ein MB ist.
/VERBOSE
Dieser Schalter veranlasst ALink, während des Link-Vorgangs weitere Information anzuzeigen.
/VERSION:<major>[.<minor>]
Wenn dieser Schalter verwendet wird, trägt ALink die vorgegebene Versionsnummer in das zu erstellende Programm ein.
Link-Reihenfolge
Standardmässig durchsucht ALink die Standard-Bibliotheken von Xbase++, sowie die explizit in Objekten genannten Bibliotheken.
Es wird in dieser Reihenfolge vorgegangen:
- in der Befehlszeile genannte Bibliotheken
- durch den Schalter /DEFAULTLIB benannte Bibliotheken
- explizit in Objekten genannte Bibliotheken