Ошибка конфигурации KLEE

Я пытаюсь установить KLEE, выполнив шаг по адресу:

http://klee.github.io/getting-started/

К сожалению, на шаге 06 "Настройте KLEE: из исходного каталога KLEE запустите:"

Я получаю следующую ошибку:

xxx@xxx18:~/klee$ ./configure --with-llvm=/home/xxx/llvm-2.9 --with-stp=/home/xxx/stp-r940/install
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking type of operating system we're going to host on... 
checking llvm source dir... /home/xxx/llvm-2.9
checking llvm obj dir... /home/xxx/llvm-2.9
checking llvm package version... 2.9
checking llvm version major... 2
checking llvm version minor... 9
checking llvm is release version... 1
checking if LLVM needs C++11... no
checking llvm build mode... Release+Asserts
checking llvm has asserts enabled... 1
checking LLVM Bitcode compiler... 
checking for llvm-gcc... FOUND
checking for llvm-g++... FOUND
Using C llvm compiler : /usr/bin/llvm-gcc
Using C++ llvm compiler : /usr/bin/llvm-g++
checking C LLVM Bitcode compiler works... Potential incompatible plugin version. GCC: 4.6 (20120301). Expected: 4.6 (20120301)
Defines 'dragonegg_disable_version_check' as env variable to remove this warning
Please note that unexpected errors might occur.
/home/xxx/llvm-2.9/Release+Asserts/bin/llvm-dis: Invalid bitcode signature
configure: error: Failed converting LLVM Bitcode to LLVM assembly. Maybe your LLVM versions do not match?

У кого-нибудь была такая же проблема?

Спасибо

Giuseppe

2 ответа

Я закодировал эту проверку конфигурации. Он проверяет, что компилятор, обнаруженный для создания битового кода LLVM, может создать битовый код LLVM, который работает с версией LLVM, против которой создается KLEE. Если эта проверка не существует и существует несовместимость битовых кодов, то компиляция среды выполнения KLEE позднее завершится неудачей, поэтому она попытается обнаружить ошибку раньше.

Это выглядит как /usr/bin/llvm-gcc не генерирует битовый код LLVM, который работает с версией LLVM, с которой вы компилируете. Вам нужно будет отладить это самостоятельно. Вы можете взглянуть на autoconf/configure.ac файл, чтобы увидеть, как осуществляется проверка.

Как уже предлагалось, отличным способом начать работу без всех этих хлопот является наш имидж Docker.

Предположительно, решение можно найти в официальных документах:
"Забывание добавить llvm-gcc к вашей переменной PATH на данный момент является наиболее распространенным источником ошибок сборки, сообщаемым новыми пользователями". ( http://klee.github.io/getting-started/)

Я использовал KLEE с llvm-2.9 давным-давно, поэтому я не мог вспомнить, собирается ли LLVM-2.9 в llvm-gcc. В настоящее время стоит поиграть с KLEE, поддерживаемым llvm-3.2 или llvm-3.4 (ни один из них не требует llvm-gcc). Для вашей информации: (1) учебник по сборке KLEE с помощью llvm-3.2: http://blog.trailofbits.com/2014/12/04/close-encounters-with-symbolic-execution-part-2/ (I пробовал этот урок с 32-битной и 64-битной версиями. Оба работали хорошо); (2) руководство по сборке KLEE с помощью llvm-3.4: ( http://klee.github.io/experimental/). или вы можете собрать KLEE (скачать версию, представленную во втором руководстве), следуя шагам, описанным в первом руководстве (просто замените версию llvm и clang).

Другие вопросы по тегам