Ich möchte Software mit dem Autotools Build-System zu LLVM-Bitcode kompilieren; das heißt, ich möchte, dass die ausführbaren Dateien am Ende LLVM-Bitcode sind, nicht der tatsächliche Maschinencode.Erstellen Autotool-Software zu LLVM-Bitcode
(Das Ziel ist es, LLVM Bitcode Analyse-Tools auf dem gesamten Programm auszuführen.)
Ich habe versucht CC="clang -emit-llvm -use-gold-plugins"
und Varianten zum configure
Skript spezifizieren, ohne Erfolg. Es ist immer etwas schief gelaufen (z. B. erstellt das Paket .a
statische Bibliotheken, die vom Linker abgelehnt werden).
Es scheint mir, dass der richtige Weg es wäre, dass LLVM-Bitcode ein Cross-Compilation-Ziel sein sollte. mit --host=
eingestellt werden, aber es gibt kein solches Standardziel (obwohl es ein Ziel für Knuths MMIX gibt).
Bisher habe ich Kludges, wie zum Beispiel mit CC="clang -emit-llvm -use-gold-plugins"
kompilieren und Verbindungslinien (mit llvm-ld
oder llvm-link
) manuell ausgeführt. Dies funktioniert für einfache Pakete wie grep
.
Ich möchte eine Methode, die robust ist und mit den meisten, wenn nicht allen, Skripts zu konfigurieren, einschließlich wenn es Zwischen-.a
Dateien oder Zwischenziele sind.
llvm-ld scheint zu implizieren, dass es .a-Dateien akzeptiert http://llvm.org/releases/2.7/docs/CommandGuide/html/llvm-ld.html –
llvm-ld existiert in späteren LLVM-Versionen nicht mehr. –
Haben Sie sich für den Link 'lindern' entschieden? http://lld.llvm.org/ –