Verwenden von LLD in der Befehlszeile

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Befehlszeilenhilfsprogramme - Index

Die Toolkette Windows 64-Bit Modern (bcc64x) verwendet den LLD-Linker von LLVM. Referenzinformationen finden Sie in der offiziellen Dokumentation zu LLD (EN).

LLD wird normalerweise von MSBuild-Skripten aufgerufen. Wenn Sie LLD manuell aufrufen möchten, beachten Sie Folgendes.

Linken der RTL

Die Objektdateien crt2.o und crtbegin.o des Startcodes sollten die ersten aufgeführten Objekte sein und crtend.o muss das letzte sein.

Fügen Sie für Delphi-Builds (wie auch für reguläre VCL- oder FMX-Anwendungen) sysinit.o und weitere Delphi-bezogene Bibliotheken wie rtl.lib und rtle.lib hinzu.

Standardmäßiges statisches vs. dynamisches Linken der RTL

Standardmäßig verwendet die neue Toolkette dynamisches Linken, während Borland/CodeGear/Embarcadero statisch linken.

RAD Studio muss sowohl mit dem traditionellen C++Builder-Verhalten kompatibel bleiben, das die Vorgabe für unsere Toolketten ist, als auch mit mingw-llvm, die für Bibliotheken wichtig ist, die diese unterstützen, und unsere Toolkette als kompatibel damit erkennen.

Denken Sie daran, dass für Ziele im Borland-Stil statisches Linken die Vorgabe ist. Verwenden Sie die folgenden Flags, um das Ziel des Builds anzugeben:

  • -tC – Konsolen-Anwendung
  • -tW – GUI-Anwendung
  • -tD – DLL
  • -tP – Package

Sie können jedoch das dynamische RTL-Linken für alle diese Ziele mit dem Flag -tR aktivieren. Ist keines dieser Ziele angegeben, ist das dynamische Linken die Standardvorgabe.

Dieser Ansatz bietet mingw-llvm-Verhalten für das normale C++Builder-Verhalten und wechselt zum traditionellen C++Builder-Toolketten-Verhalten, wenn die oben genannten Ziele angegeben werden, z. B. beim Erstellen von VCL-Anwendungen.

Linken von Bibliotheken

Fügen Sie Bibliotheken mit dem Flag -l:[Bibliothek] hinzu. Beachten Sie den Doppelpunkt zwischen dem kleinen L und dem Bibliotheksnamen. Verwenden Sie -lname, um die Bibliothek Bibliotheksname.a mit der Erweiterung .a hinzuzufügen, und -l:name.ext für explizit angegebene Namen wie "-l:rtle.lib".

Beispielsweise linkt -l:ucrt mit der UCRT-Bibliothek libucrt.a und -l:rtle.lib mit "rtle.lib".

Hinweis: Andere Bibliotheken als MinGW haben möglicherweise kein lib-Präfix, sondern verwenden stattdessen die Erweiterung .lib. Zum Beispiel: rtle.lib oder import64.lib.

Siehe auch