本文参考
https://blog.youkuaiyun.com/wuhaou12345678/article/details/125056332
https://blog.youkuaiyun.com/qq_21746331/article/details/114967920
修改部分命令,可以正常运行
安装环境:/opt/klee_env
1.安装必备工具和依赖
sudo apt-get install build-essential curl libcap-dev git cmake libncurses5-dev python-minimal python-pip unzip libtcmalloc-minimal4 libgoogle-perftools-dev libsqlite3-dev doxygen
sudo apt-get install python3 python3-pip gcc-multilib g++-multilib
sudo pip3 install lit tabulate wllvm
sudo apt-get install zlib1g-dev
2.安装LLVM9
sudo apt-get install clang-9 llvm-9 llvm-9-dev llvm-9-tools
3.安装约束求解器z3
git clone https://github.com/Z3Prover/z3.git
cd z3/
python scripts/mk_make.py
sudo make install
4.安装uClibc 和 POSIX 环境(建议安装)
如果想使用 KLEE 来运行实际程序,将需要启用 KLEE POSIX 运行时,它构建在uClibc C 库之上。毕竟针对实际程序还是有用的
git clone https://github.com/klee/klee-uclibc.git
cd klee-uclibc /configure --make-llvm-lib --with-llvm-config /usr/bin/llvm-config-9
make
5.获取谷歌测试集(可选)
curl -OL https://github.com/google/googletest/archive/release-1.7.0.zip
unzip release-1.7.0.zip
6.下载klee2-2的代码
下载地址:https://github.com/klee/klee/releases
下载后,解压到/opt/klee_env的路径下
构建 libc++,为了支持C++代码的运行,需要打开对C++标准库的支持
cd klee-2.2
LLVM_VERSION=9 SANITIZER_BUILD= BASE=/opt/klee_env(自己的路径) REQUIRES_RTTI=1 DISABLE_ASSERTIONS=1 ENABLE_DEBUG=0 ENABLE_OPTIMIZED=1 ./scripts/build/build.sh libcxx
7.编译构建klee
安装gcc9(可选)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9
编译
cd klee2-2
mkdir build
cd build
sudo cmake -DENABLE_SOLVER_STP=NO -DENABLE_SOLVER_Z3=ON -DENABLE_POSIX_RUNTIME=ON -DENABLE_KLEE_UCLIBC=ON -DENABLE_KLEE_LIBCXX=ON -DKLEE_LIBCXX_DIR=/opt/klee_env/libc++-install-90/ -KLEE_LIBCXX_INCLUDE_DIR=/opt/klee_env/libc++-install-90/include/c++/v1/ -DENABLE_KLEE_EH_CXX=ON -DKLEE_LIBCXXABI_SRC_DIR=/opt/klee_env/llvm-90/libcxxabi/ -DKLEE_UCLIBC_PATH=/opt/klee_env/klee-uclibc/ -DENABLE_UNIT_TESTS=ON -DENABLE_SYSTEM_TESTS=ON -DGTEST_SRC_DIR=/opt/klee_env/googletest-release-1.7.0/ -DLLVM_CONFIG_BINARY=/usr/bin/llvm-config-9 -DLLVMCC=/usr/bin/clang-9 -DLLVMCXX=/usr/bin/clang++-9 -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ ..
make
sudo make install