Ich bin neu in LLVM Compiler und Infrastruktur. Ich habe folgenden Gedanken. Clang ist das LLVM-Frontend für C/C++, ähnlich Rustc für Rust Programmiersprache. Beide können den LLVM-IR-Code ausgeben, und der ausgegebene Code kann in eine ausführbare Anwendung kompiliert werden.LLVM als Basis-Compiler für verschiedene Sprachen
Meine Frage ist, ist es möglich, verschiedene Programmiersprachen zu verknüpfen? Beispiel unten -
/* Code in C */
int add(int, int);
int main()
{
printf("%d", add(5 ,6));
}
Die Funktion in Rust definiert zum Beispiel
// Code in Rust
fn main()
{
println!("{}", add(5, 6));
}
fn add (x: i32, y: i32) -> i32
{
x + y
}
Sobald die IR von erzeugt wird sowohl die Quelldateien, ist es möglich, sie zu verbinden und eine einzige Anwendung erstellen?
Ich bin nur neugierig zu wissen, ob das funktioniert, lass es mich wissen.
Ich denke, Sie müssen irgendwo eine Rost-Laufzeit haben ... aber das Problem ist anders, wenn c von Rost oder der Converse anrufen. –
Jeder Quellcode muss zuerst getrennt ausgegeben werden.Anschließend kann der Befehl llvm-link mehrere Bitcode-Dateien zusammenführen. Wenn der Aufruf von einem Quellcode mit dem zweiten übereinstimmt, könnte es funktionieren. –
Beide Sprachen müssen Application Binary Interface-kompatibel sein. –