Dies ist eine modifizierte Version von uClibc für KLEE. Weitere Informationen zu uClibc finden Sie in der README-Datei.
So erstellen Sie uClibc für KLEE:
Stellen Sie sicher, dass sich llvm-config
in Ihrem PATH befindet (oder legen Sie es mit --with-llvm-config
fest). Die von llvm-config
verwendete LLVM-Version sollte mit der LLVM-Version übereinstimmen, die vom C-LLVM-Bitcode-Compiler verwendet wird, den Sie in Schritt 2 verwenden möchten.
Stellen Sie sicher, dass Sie über einen der folgenden C-LLVM-Compiler verfügen
clang
im LLVM-Toolverzeichnis erstellt ( llvm-config --bindir
)clang
in deinem PATH
Der zu verwendende C-Compiler wird in der oben genannten Reihenfolge mit dem ersten zu verwendenden funktionierenden Compiler gesucht.
Beachten Sie, dass Sie einen bestimmten C-Compiler auch erzwingen können, indem Sie die CC-Umgebungsvariable verwenden oder --with-cc
mit dem Konfigurationsskript verwenden.
Führen Sie das Konfigurationsskript aus.
$ ./configure --make-llvm-lib
Um alle Optionen anzuzeigen, führen Sie sie aus
$ ./configure --help
Standardmäßig wird vom Konfigurationsskript eine vorgefertigte uClibc- .config
Datei zum uClibc-Stammverzeichnis hinzugefügt. Dies geschieht, um den Benutzern die Kompilierung zu erleichtern. Allerdings kann das Flag --disable-prebuilt-config verwendet werden, um das Hinzufügen einer .config
Datei zu verhindern. Wenn Sie Ihre eigene .config
erstellen möchten, können Sie dies tun, indem Sie make menuconfig
oder make config
ausführen, nachdem Sie das Konfigurationsskript ausgeführt haben.
Kompilieren
$ make
Sie können auch optionale Flags hinzufügen, indem Sie KLEE_CFLAGS=...
am Ende der Make-Zeile oben hinzufügen. Insbesondere zum Kompilieren von printf, das standardmäßig ausgeschlossen ist, verwenden Sie Folgendes:
make KLEE_CFLAGS="-DKLEE_SYM_PRINTF"
Um im optimierten Modus zu kompilieren, verwenden Sie das Flag --enable-release
. Achtung: Wenn Sie dies tun, könnten Dinge kaputt gehen.