Generieren von Rust ausführbar aus LLVM-Bitcode

8

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?

    
Leonardo Marques 24.05.2016, 14:16
quelle

2 Antworten

5

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.

    
Shepmaster 24.05.2016, 14:54
quelle
4

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%     
Peter Caven 26.05.2016 20:26
quelle

Tags und Links