admin 管理员组文章数量: 1086019
在 Ubuntu 18.04 下安装 Klee 2.2
Klee 是基于 LLVM 的符号执行引擎,因此安装 Klee 首先需要安装对应版本的 LLVM 。Klee 2.2 版本是基于 LLVM 9 的,本文主要记录在纯净 Ubuntu 18.04 安装 Klee 2.2 的过程。
注:以下所有过程均在本人 Ubuntu 的目录 /home/nino/klee_env
中进行。
- 安装依赖
$ 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
- 安装 LLVM 9
# 对于版本在18.04以上的Ubuntu,可以直接使用包管理器安装LLVM套件
$ sudo apt-get install clang-9 llvm-9 llvm-9-dev llvm-9-tools
- 安装约束求解器 Z3
首先访问 Z3 的发布版网站下载 4.7.1 版本的源代码压缩包,将压缩包放入到目录/home/nino/klee_env
中。然后执行如下命令从源代码构建 Z3 Solver:
$ unzip z3-z3-4.7.1.zip
$ cd z3-z3-4.7.1/
$ mkdir build
$ cd build/
$ cmake -G "Unix Makefiles" ../
$ make -j2 #根据处理器的核心数替换数字2
$ sudo make install
- 获取谷歌测试集(可选)
Klee 使用谷歌测试集作为单元测试库,这是一个可选项,如果需要进行单元测试则可以通过下述命令下载谷歌测试集,并且在用 CMake 配置 Klee 的时候输入 CMake 命令行参数-DENABLE_UNIT_TESTS=ON
和-DGTEST_SRC_DIR=<GTEST_SOURCE_DIR>
。
$ curl -OL .7.0.zip
$ unzip release-1.7.0.zip
- 构建 uClibc 和 POSIX 环境模型(可选)
默认来说,Klee 仅仅对不使用任何外部代码的程序(如 C 库函数)进行分析。如果需要使用 Klee 来运行实际的程序,则需要启用构建在 uClibc C库之上的 KLEE POSIX 运行环境。
$ git clone .git
$ cd klee-uclibc
$ gedit ./configure
# 修改configure中的第354行代码,将其中getAbsPathForToolInPathEnv函数的实参llvm-config修改为llvm-config-9。
$ ./configure --make-llvm-lib
$ make -j2
- 下载 Klee2.2 源代码压缩包
进入 Klee 的 Release 网站 ,下载 Klee2.2 的压缩包,并且解压缩。此时在文件夹/home/nino/klee_env
下的文件夹如下:
- 构建 libc++(可选)
为了支持C++代码的运行,需要打开对C++标准库的支持。
$ cd klee-2.2
$ LLVM_VERSION=9 SANITIZER_BUILD= BASE=/home/nino/klee_env REQUIRES_RTTI=1 DISABLE_ASSERTIONS=1 ENABLE_DEBUG=0 ENABLE_OPTIMIZED=1 ./scripts/build/build.sh libcxx
- 构建编译 Klee 2.2
#如果是将上述可选项都加入了,则可以直接复制一下cmake的参数,否则需要自己调整删减掉不需要的参数
$ cd klee-2.2
$ mkdir build
$ cd build
$ cmake \
-DENABLE_SOLVER_Z3=ON \
-DENABLE_POSIX_RUNTIME=ON \
-DENABLE_KLEE_UCLIBC=ON \
-DKLEE_UCLIBC_PATH=/home/nino/klee_env/klee-uclibc \
-DENABLE_UNIT_TESTS=ON \
-DGTEST_SRC_DIR=/home/nino/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 \
-DENABLE_KLEE_LIBCXX=ON \
-DKLEE_LIBCXX_DIR=/home/nino/klee_env/libc++-install-90 \
-DKLEE_LIBCXX_INCLUDE_DIR=/home/nino/klee_env/libc++-install-90/include/c++/v1 \
-DENABLE_KLEE_EH_CXX=ON \
-DKLEE_LIBCXXABI_SRC_DIR=/home/nino/klee_env/llvm-90/libcxxabi \
../
$ make -j2
- 编译成功的二进制目录
- 测试
在构建目录build下输入如下指令,输出如下运行过程:
# 运行系统测试和单元测试
$ make check
至此,Klee 构建成功,以上构建 Klee 步骤均可在 CLion 中实现。
本文标签: 在 Ubuntu 1804 下安装 Klee 22
版权声明:本文标题:在 Ubuntu 18.04 下安装 Klee 2.2 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686559620a10271.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论