我正在尝试按照以下步骤安装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?
有没有人有同样的问题?
由于
朱塞佩
答案 0 :(得分:2)
我编写了这个配置检查。它正在检查检测到的用于创建LLVM bitcode的编译器是否可以创建LLVM bitcode,该bitcode与正在构建KLEE的LLVM版本一起使用。如果这个检查不存在并且存在bitcode不兼容性,那么KLEE运行时的编译将会失败,因此这会尝试更早地检测到故障。
看起来/usr/bin/llvm-gcc
生成的LLVM bitcode与您正在编译的LLVM版本一起使用。您需要自己调试。您可以查看autoconf/configure.ac
文件以了解检查的实施方式。
正如我们Docker image
所述,已经提出一个很好的方法来开始没有这一切的麻烦答案 1 :(得分:0)
据推测,解决方案可以在官方文件中找到:
"此时忘记将llvm-gcc添加到PATH是新用户报告的最常见的构建错误来源。" (http://klee.github.io/getting-started/)
很久以前我使用了llvm-2.9的KLEE,所以我不记得LLVM-2.9是否在llvm-gcc中构建。目前,使用llvm-3.2或llvm-3.4支持的KLEE应该是很好的(它们都不需要llvm-gcc)。为了您的信息:(1)使用llvm-3.2构建KLEE的教程:http://blog.trailofbits.com/2014/12/04/close-encounters-with-symbolic-execution-part-2/#comments(我使用32位ubuntu和64位ubuntu尝试了本教程。两者都运行良好); (2)使用llvm-3.4构建KLEE的教程:(http://klee.github.io/experimental/)。或者您可以按照第一个教程中解释的步骤构建KLEE(下载第二个教程中提供的版本)(只需替换llvm和clang的版本)。