Klee 安装方法
为了安装klee我尝试了各种版本安装,终于安装成功
环境:ubuntu16.04 llvm-3.9 clang-3.9
2018.7.27
装llvm-3.9 的我当初真的是无知啊,人家klee现在适配的才到llvm-3.8. 我当初竟然装了llvm3.9. 用3.9装的klee -posix-runtime功能是不好使的。所以大家,还是先装llvm3.4 然后再装klee吧,以下装llvm部分的内容请忽略掉。若是装llvm3.8 可以参考一下下面的步骤。
Klee 官网安装教程:http://klee.github.io/build-llvm34/
参考:http://terenceli.github.io/技术/2017/06/08/klee-newbie
步骤:
1.依赖库安装
$ sudo apt-get install build-essential curl libcap-dev git cmake libncurses5-dev python-minimal python-pip unzip2.安装LLVM 需要注意:
对于不同版本的ubuntu应该到 LLVM Package Repository 找到对应版本的。写入source.list 中。
以16.04 为例:
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main添加repository key并下载llvm 3.9的packages
$ wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add - $ sudo apt-get update $ sudo apt-get install clang-3.9 lldb-3.9需要在~/.bashrc里面改一下PATH:(注意不要在命令行中配置,否则每次开机都得配置一遍)
export PATH="/usr/lib/llvm-3.9/bin:$PATH"3.安装约束解释器:
选择的是STP,根据官网中的文档直接配置即可。
4.可选项暂时未配置
5.获得KLEE 资源时,由于直接使用官网的安装包,出现了如下错误。
/home/test/klee/include/klee/Internal/Support/FloatEvaluation.h: In function ‘bool klee::floats::isNaN(uint64_t,unsigned int)’:/home/test/klee/include/klee/ Internal/Support/FloatEvaluation.h:135:25: error: ‘IsNAN’ is not a member of ‘llvm’case FLT_BITS: return llvm::IsNAN( UInt64AsFloat(l) );^/home/test/klee/include/klee/Internal/Support/FloatEvaluation.h:136:25: error: ‘IsNAN’ is not a member of ‘llvm’case DBL_BITS: return llvm::IsNAN( UInt64AsDouble(l) );^/home/test/klee/lib/Core/Executor.cpp: In member function ‘void klee::Executor::executeCall(klee::ExecutionState&, klee::KInstruction*, llvm::Function*, std::vector<klee::ref<klee::Expr> >&)’:/home/test/klee/lib/Core/Executor.cpp:1403:21: error: ‘RoundUpToAlignment’ is not a member of ‘llvm’size = llvm::RoundUpToAlignment(size, 16);卡在这个地方好几天,最终参考:http://terenceli.github.io/技术/2017/06/08/klee-newbie
使用其他人提供的llvm 3.9 的pr
$ git clone https://github.com/jirislaby/klee.git $ cd klee $ git branch -a git checkout remotes/origin/llvm_396.配置KLEE
$ mkdir klee_build_dir $ cd klee_build_dir $ cmake -DENABLE_SOlVER_STP=ON -DENABLE_SYSTEM_TESTS=OFF -DENABLE_UNIT_TESTS=ON ../klee由于未配置可选项所以要将这些关闭。在cmake的过程中,会提示关闭。
并且若提示找不到Doxygen,则需要安装
sudo apt-get install doxygen7.编译安装klee
make
若出现找不到liblibLLVM-3.9.so.so的情况,参考:http://terenceli.github.io/技术/2017/06/08/klee-newbie
make[2]: *** No rule to make target '/usr/lib/llvm-3.9/lib/liblibLLVM-3.9.so.so', needed by 'bin/gen-random-bout'. Stop.则利用软链接。
$ ln -L libLLVM-3.9.so liblibLLVM-3.9.so.so最后再
$ sudo make install