Wie kann ich eine ausführbare Datei einer in Rust geschriebenen Anwendung generieren, die in LLVM-IR-Bitcode kompiliert wurde?
Wenn ich versuche, die .bc-Datei mit rustc zu kompilieren, sagt sie mir stream did not contain valid UTF-8
und ich kann nicht herausfinden, ob es dafür eine bestimmte Option in rustc gibt.
Grundsätzlich möchte ich das erreichen:
program.rs
- & gt; program.bc
- & gt; %Code%.
Wobei program
die endgültige ausführbare Datei ist. Welche Schritte sollte ich machen, um dies zu erreichen?
Beginnend mit diesem Quellcode:
%Vor%Sie können LLVM Zwischendarstellung (IR) oder Bitcode (BC) erstellen:
%Vor%Diese Dateien können dann von LLVM weiterverarbeitet werden, um assembly oder eine Objektdatei zu erstellen:
%Vor%Dann müssen Sie die Dateien verknüpfen, um eine ausführbare Datei zu erzeugen. Dies erfordert eine Verknüpfung mit den Rust-Standardbibliotheken. Der Pfad ist plattform- und versionsabhängig:
%Vor%Sie können das Programm dann ausführen:
%Vor%Diese Antwort enthält OS X-spezifische Lösungen, aber die allgemeinen Konzepte sollten auf Linux und Windows erweiterbar sein. Die Implementierung unterscheidet sich leicht für Linux und wahrscheinlich auch für Windows.
Es ist nicht offensichtlich, da die LLVM-Dokumentation sehr unklar ist, aber clang wird sowohl LLVM-IR-Dateien (".ll") als auch Bitcodedateien (".bc") kompilieren und verlinken Ihre Systembibliotheken.
Unter Linux mit Rust 1.9:
%Vor%