ubuntu16.04安装klee(基于llvm 3.8)教程

前言

查阅了很多资料,踩了不少的坑,总的来说,这个应该是比较完善的基于llvm3.8和ubuntu16.04的安装教程,至少我自己按照这个没有问题,而且可能遇到的坑也写在了这里。如果你有什么疑问,欢迎评论。

进入klee官网

http://klee.github.io/

选择Documentation 的BuildingKLEE(LLVM3.8 - experimental)

安装依赖包

可以使用apt来进行依赖包安装

$ sudo apt-get install build-essential	\
curl libcap-dev git cmake libncurses5-dev \
python-minimal python-pip unzip libtcmalloc-minimal4 \
libgoogle-perftools-dev

安装llvm3.8

先尝试执行

$ sudo apt-get install clang-3.8 llvm-3.8 llvm-3.8-dev llvm-3.8-tools

如果报错,那就只能下载源代码进行安装

源代码安装llvm3.8

参考这个链接

https://blog.csdn.net/mchtnwn/article/details/56676163

在当前目录下建立文件夹

mkdir ~/llvm-lang
cd llvm-clang

下载llvm源代码

wget http://llvm.org/releases/3.8.0/llvm-3.8.0.src.tar.xz
tar xf llvm-3.8.0.src.tar.xz
mv llvm-3.8.0.src llvm

下载clang的源代码

cd llvm/tools
wget http://llvm.org/releases/3.8.0/cfe-3.8.0.src.tar.xz
tar xf cfe-3.8.0.src.tar.xz
mv cfe-3.8.0.src clang
cd ../..

下载clang-tools-extra的源代码

cd llvm/tools/clang/tools
wget http://llvm.org/releases/3.8.0/clang-tools-extra-3.8.0.src.tar.xz
tar xf clang-tools-extra-3.8.0.src.tar.xz
mv clang-tools-extra-3.8.0.src extra
cd ../../../..

下载compiler-rt的源代码

cd llvm/projects
wget http://llvm.org/releases/3.8.0/compiler-rt-3.8.0.src.tar.xz
tar xf compiler-rt-3.8.0.src.tar.xz
mv compiler-rt-3.8.0.src compiler-rt
cd ../..

配置编译选项

cd llvm-lang
mkdir llvm-build
cd llvm-build
../llvm/configure --enable-optimized

此种配置,llvm-clang默认安装到目录/usr/local下,如果想改变安装目录,则加上配置:

--prefix=Path来指定输入。

进入llvm-build目录

执行

make -j4
sudo make install

验证成功

clang -v

如果是3.8的话,那就表明安装成功

安装求解器

求解器有很多种,主流的有STP,Z3;

这里我们安装Z3

git clone https://github.com/Z3Prover/z3.git
cd z3
python scripts/mk_make.py
cd build
make
sudo make install

参考链接

https://github.com/z3prover/z3

安装uclibc和POSIX环境

$ git clone https://github.com/klee/klee-uclibc.git
$ cd klee-uclibc
$ ./configure --make-llvm-lib
$ make -j2
$ cd ..

下载Google test sources

$ curl -OL https://github.com/google/googletest/archive/release-1.7.0.zip
$ unzip release-1.7.0.zip

安装lit

$ pip install lit

安装tcmalloc

$ sudo apt-get install libtcmalloc-minimal4 libgoogle-perftools-dev

下载klee源代码 并且配置

$ git clone https://github.com/klee/klee.git
$ mkdir klee_build_dir
cd klee_build_dir
$ cmake <CMAKE_OPTIONS> <KLEE_SRC_DIRECTORY>

最后一行的<>内容是配置选项,可以这样写

$ cmake -DENABLE_SOLVER_Z3=ON \
-DENABLE_POSIX_RUNTIME=ON \
-DENABLE_KLEE_UCLIBC=ON \
-DKLEE_UCLIBC_PATH=../klee-uclibc \
-DGTEST_SRC_DIR=../googletest-release-1.7.0 \
-DENABLE_SYSTEM_TESTS=ON \
-DENABLE_UNIT_TESTS=ON \
../klee

使用绝对路径有可能会编译失败,因此使用相对路径

如果找不到doxygen,那就进行安装

$ sudo apt-get install doxygen

如果缺乏zlib,那么编译也会失败

sudo apt-get install zlib1g-dev

参考链接

在ubuntu中安装zlib

https://blog.csdn.net/wsclinux/article/details/50494501?utm_source=blogkpcl2

编译安装klee

$ make
$ sudo make install

安装注意事项

参考链接

http://terenceli.github.io/技术/2017/06/08/klee-newbie

中使用了llvm3.9安装klee,但是官网最高只支持3.8,因此照搬会导致安装出错,

这里就老老实实使用3.8

使用docker安装klee

$sudo apt install docker
$sudo apt install docker.io
$docker pull klee/klee $ git clone https://github.com/klee/klee.git
$ cd klee
$ docker build -t klee/klee .
//创建一个klee的docker容器
$ docker run --rm -ti --ulimit='stack=-1:-1' klee/klee

ubuntu16.04安装klee的更多相关文章

  1. ubuntu16.04安装jdk,tomcat

    ubuntu16.04安装jdk,tomcat 最近装了一下tomcat,网上的教程很多,我也试了很多次,但是有一些教程关于tomcat配置是错误的,让我走上了歧途.差点重装系统,还好王总及时出手帮助 ...

  2. Ubuntu16.04 安装openjdk-7-jdk

    Ubuntu16.04 安装openjdk-7-jdk sudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdk ...

  3. Ubuntu16.04安装GTK3主题:OSX-Arc

    Ubuntu16.04安装GTK3主题:OSX-Arc GTK3主题:OSX-Arc描述: 前几个月,Gnome3.20升3.22的时候,出现了大量主题崩溃的现象,其中包括Arc.Flatabulou ...

  4. Ubuntu16.04安装opencv for python/c++

    Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...

  5. ubuntu16.04安装不上有道词典的解决办法

    转自:http://www.linuxdiyf.com/linux/21143.html ubuntu16.04安装不上有道词典,提示: le@hu-pc:~/下载$ sudo dpkg -i you ...

  6. Ubuntu16.04安装mongodb

    Ubuntu16.04安装mongodb copy from: http://blog.csdn.net/zhushh/article/details/52451441 1.导入软件源的公钥 sudo ...

  7. 【Tools】ubuntu16.04安装搜狗输入法

    Ubuntu16,04 安装搜狗输入法 1.下载搜狗输入法的安装包 下载地址为:http://pinyin.sogou.com/linux/ 2.按键Ctr+Alt+T打开终端,输入以下命令切换到下载 ...

  8. Ubuntu16.04安装cuda9.0+cudnn7.0

    Ubuntu16.04安装cuda9.0+cudnn7.0 这篇记录拖了好久,估计是去年6月份就已经安装过几遍,然后一方面因为俺比较懒,一方面后面没有经常在自己电脑上跑算法,比较少装cuda和cudn ...

  9. Ubuntu16.04安装TensorFlow及Mnist训练

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com TensorFlow是Google开发的开源的深度学习框架,也是当前使用最广泛的深度学习框架. 一.安 ...

随机推荐

  1. shell脚本 批量添加删除用户

    2021-07-26 1.批量添加用户 # 编写脚本 vi add_student_50.sh # 添加用户组 student groupadd student # 添加用户 student1-stu ...

  2. JS 之 每日一题 之 算法 ( 有多少小于当前数字的数字 )

    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 ...

  3. WebService学习总结(二)--使用JDK开发WebService

    一.WebService的开发方法 使用java的WebService时可以使用一下两种开发手段 使用jdk开发(1.6及以上版本) 使用CXF框架开发(工作中) 二.使用JDK开发WebServic ...

  4. Docker(36)- docker run 的流程和原理

    背景 目前项目组上, Docker 用的非常重,所有微服务都是通过 docker 来部署的 所以不能仅仅会命令,还得会一些原理的东西,特此补一篇基础点的,后面再更加深入一些 docker 原理 本篇学 ...

  5. 并发容器之ConcurrentMap

    一.concurentMap 1.数据结构,分段数组segment不扩容,里面的table扩容,每次翻倍,table中放的是entry链表的头地址: 2.初始化 segment和table的长度都是2 ...

  6. Python - poetry(3)配置项详解

    config 命令 poetry 通过 config 命令进行配置 也可以直接在 config.toml 文件中进行配置,该文件将在首次运行该命令时自动创建 文件目录 macOS:~/Library/ ...

  7. 本地Markdown文件上传到博客

    本地Markdown文件上传到博客 参考:https://www.cnblogs.com/ccylhw/p/13954153.html 1.Typora 最漂亮的写作APPhttps://www.ty ...

  8. POJ——3278 Catch That Cow(BFS队列)

    相比于POJ2251的三维BFS,这道题做法思路完全相同且过程更加简单,也不需要用结构体,check只要判断vis和左右边界的越界情况就OK. 记得清空队列,其他没什么好说的. #include< ...

  9. python matplotlib.pyplot 散点图详解(2)

    python matplotlib.pyplot 散点图详解(2) 上期资料 一.散点图叠加 可以用多个scatter函数叠加散点图 代码如下: import matplotlib.pyplot as ...

  10. PHP设计模式之享元模式

    享元模式,"享元"这两个字在中文里其实并没有什么特殊的意思,所以我们要把它拆分来看."享"就是共享,"元"就是元素,这样一来似乎就很容易理解 ...