6 Stimmen

LLVM was ist es und wie kann ich es verwenden, um Cross-Plattform-Kompilierungen

Ich las hier und dort über llvm, die verwendet werden können, um den Schmerz der Cross-Plattform-Kompilierungen in C++ zu erleichtern, ich versuchte, die Dokumente zu lesen, aber ich verstand nicht, wie kann ich Ich habe versucht, die Dokumente zu lesen, aber ich habe nicht verstanden, wie ich es im wirklichen Leben Entwicklungsprobleme kann jemand bitte erklären Sie mir in einfachen Worten, wie kann ich es verwenden?

6voto

David Dolson Punkte 290

Das Schlüsselkonzept von LLVM ist eine Low-Level-"Zwischen"-Darstellung (IR) Ihres Programms. Diese IR befindet sich etwa auf der Ebene von Assembler-Code, enthält aber mehr Informationen, um die Optimierung zu erleichtern.

Die Stärke von LLVM liegt in seiner Fähigkeit, die Kompilierung dieser Zwischendarstellung für eine bestimmte Zielmaschine aufzuschieben, bis kurz bevor der Code ausgeführt werden muss. Ein Just-in-Time (JIT)-Kompilierungsansatz kann für eine Anwendung verwendet werden, um den Code zu erzeugen, den sie benötigt, kurz bevor sie ihn braucht.

In vielen Fällen verfügen Sie zum Zeitpunkt der Ausführung des Programms über mehr Informationen als in der Zentrale, so dass das Programm erheblich optimiert werden kann.

Für den Anfang könnten Sie ein C++-Programm in eine einzige Zwischendarstellung kompilieren und es dann von dieser IR aus für mehrere Plattformen kompilieren.

Sie können auch die Kaleidoscope-Demo ausprobieren, die Sie durch die Erstellung einer neuen Sprache führt, ohne dass Sie tatsächlich einen Compiler schreiben müssen, sondern nur die IR.

In leistungskritischen Anwendungen kann die Anwendung im Wesentlichen ihren eigenen Code schreiben, den sie ausführen muss, kurz bevor sie ihn ausführen muss.

2voto

lothar Punkte 19157

Warum gehst du nicht zum LLVM Website und sehen Sie sich dort die gesamte Dokumentation an. Sie erklären sehr detailliert, was LLVM ist und wie man es benutzt. Zum Beispiel haben sie eine Erste Schritte Seite.

1voto

Marko Punkte 29192

LLVM ist, wie der Name schon sagt, eine Low-Level-Virtual-Machine, die über einen Codegenerator verfügt. Wenn Sie damit kompilieren wollen, können Sie entweder das gcc-Frontend oder clang das ist ein C/C++-Compiler für LLVM, der noch in Arbeit ist.

1voto

Jon Watte Punkte 5881

Es ist wichtig zu beachten, dass eine Reihe von Informationen über das Ziel aus den System-Header-Dateien stammen, die Sie beim Kompilieren verwenden. LLVM nicht aufschieben Auflösung Dinge wie "Größe des Zeigers" oder "Byte-Layout", so dass, wenn Sie mit 64-Bit-Header für eine Little-Endian-Plattform kompilieren, können Sie nicht verwenden, dass LLVM-Quellcode zu einem 32-Bit-Big-Endian-Assembly-Ausgabe-Pater Ziel.

1voto

Es gibt ein gutes Kapitel in einem Buch, in dem alles gut erklärt wird: www.aosabook.org/en/llvm.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X