Это модифицированная версия uClibc для KLEE. Пожалуйста, прочтите README для получения информации о uClibc.
Чтобы собрать uClibc для KLEE:
Убедитесь, что llvm-config
находится в вашем PATH (или установите его с помощью --with-llvm-config
). Версия LLVM, используемая llvm-config
должна соответствовать версии LLVM, используемой компилятором битового кода C LLVM, который вы собираетесь использовать на шаге 2.
Убедитесь, что у вас есть один из следующих компиляторов C LLVM.
clang
встроенный в каталог инструментов LLVM ( llvm-config --bindir
)clang
в вашем PATH
Компилятор C, который будет использоваться, будет искаться в указанном выше порядке, начиная с первого работающего компилятора, который будет использоваться.
Обратите внимание, что вы также можете принудительно использовать конкретный компилятор C, используя переменную среды CC или используя --with-cc
со сценарием настройки.
Запустите скрипт настройки.
$ ./configure --make-llvm-lib
Чтобы просмотреть все параметры, запустите
$ ./configure --help
По умолчанию предварительно созданный файл .config
uClibc будет добавлен в корневой каталог uClibc с помощью сценария настройки. Это сделано для того, чтобы облегчить пользователям компиляцию. Однако флаг --disable-prebuilt-config можно использовать для предотвращения добавления файла .config
. Если вы хотите создать свой собственный .config
вы можете сделать это, запустив make menuconfig
или make config
после запуска сценария настройки.
Скомпилировать
$ make
Вы также можете добавить дополнительные флаги, добавив KLEE_CFLAGS=...
в конец строки make выше. В частности, для компиляции printf, который по умолчанию исключен, используйте:
make KLEE_CFLAGS="-DKLEE_SYM_PRINTF"
Для компиляции в оптимизированном режиме используйте флаг --enable-release
. Предупреждение: если вы это сделаете, все может сломаться.