检查 C LLVM Bitcode 编译器是否工作.../xxx/llvm-3.4/Release+Asserts/bin/llvm-dis:值类型无效

checking C LLVM Bitcode compiler works... /xxx/llvm-3.4/Release+Asserts/bin/llvm-dis: Invalid type for value

当我尝试在 installing Klee 之前安装 LLVM 3.4 时出现此错误。

源代码是从LLVM官网下载的,在Klee中解压成一个单独的文件。 llvm-3.4 目录中的 Makefile 用于构建 LLVM。

要构建 Klee,首先:

./configure --with-llvm=/home/zhangysh1995/work/llvm-3.4/ --wi
th-stp=/home/zhangysh1995/work/stp/stp

错误:

....
checking for clang... FOUND
checking for clang++... FOUND
Using C llvm compiler : /usr/bin/clang
Using C++ llvm compiler : /usr/bin/clang++
checking C LLVM Bitcode compiler works... 
/home/zhangysh1995/work/llvm-3.4/Release+Asserts/bin/llvm-dis: In
valid type for value
configure: error: Failed converting LLVM Bitcode to LLVM assembly. Maybe your LLVM versions do not match?

这个错误似乎是 Klee 抛出的,但正如 Klee 指南所说,我的 LLVM 版本没有问题。

另一个类似的问题已发布 here and here,但没有帮助。

我仍然不知道从哪里开始调试。感谢任何可能的帮助。

错误意味着 klee 使用 /usr/bin/clang++ 将示例源代码编译为 .bc 。然后用/home/zhangysh1995/work/llvm-3.4/Release+Asserts/bin/llvm-dis拆解。

您可以通过比较 $ /usr/bin/clang++ --version$ /home/zhangysh1995/work/llvm-3.4/Release+Asserts/bin/clang++ --version 的输出来验证版本不匹配。

要解决这个问题,请使用:

 ./configure \
 --with-llvm=/home/zhangysh1995/work/llvm-3.4/ \
 --with-llvmcc=/home/zhangysh1995/work/llvm-3.4/Release+Asserts/bin/clang \
 --with-llvmcxx=/home/zhangysh1995/work/llvm-3.4/Release+Asserts/bin/clang++ \
 --with-stp=/home/zhangysh1995/work/stp/stp