ubuntu16.04安装klee
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的更多相关文章
- ubuntu16.04安装jdk,tomcat
ubuntu16.04安装jdk,tomcat 最近装了一下tomcat,网上的教程很多,我也试了很多次,但是有一些教程关于tomcat配置是错误的,让我走上了歧途.差点重装系统,还好王总及时出手帮助 ...
- Ubuntu16.04 安装openjdk-7-jdk
Ubuntu16.04 安装openjdk-7-jdk sudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdk ...
- Ubuntu16.04安装GTK3主题:OSX-Arc
Ubuntu16.04安装GTK3主题:OSX-Arc GTK3主题:OSX-Arc描述: 前几个月,Gnome3.20升3.22的时候,出现了大量主题崩溃的现象,其中包括Arc.Flatabulou ...
- Ubuntu16.04安装opencv for python/c++
Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...
- ubuntu16.04安装不上有道词典的解决办法
转自:http://www.linuxdiyf.com/linux/21143.html ubuntu16.04安装不上有道词典,提示: le@hu-pc:~/下载$ sudo dpkg -i you ...
- Ubuntu16.04安装mongodb
Ubuntu16.04安装mongodb copy from: http://blog.csdn.net/zhushh/article/details/52451441 1.导入软件源的公钥 sudo ...
- 【Tools】ubuntu16.04安装搜狗输入法
Ubuntu16,04 安装搜狗输入法 1.下载搜狗输入法的安装包 下载地址为:http://pinyin.sogou.com/linux/ 2.按键Ctr+Alt+T打开终端,输入以下命令切换到下载 ...
- Ubuntu16.04安装cuda9.0+cudnn7.0
Ubuntu16.04安装cuda9.0+cudnn7.0 这篇记录拖了好久,估计是去年6月份就已经安装过几遍,然后一方面因为俺比较懒,一方面后面没有经常在自己电脑上跑算法,比较少装cuda和cudn ...
- Ubuntu16.04安装TensorFlow及Mnist训练
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com TensorFlow是Google开发的开源的深度学习框架,也是当前使用最广泛的深度学习框架. 一.安 ...
随机推荐
- Javascirpt 面向对象总结-继承
JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 公有属性 this.name = name || ...
- tslib移植arm及使用
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 tslib 1.4 下载 https://gitlab. ...
- Postman 根据nginx日志查账号
1) GET:http://fwm.le-yao.com/api/backend/profile 2) Headers中,在KEY中添加 Content-Type ,对应的VALUE为 applica ...
- Vue 路由跳转报错 Error: Avoided redundant navigation to current location: "/XXX".
在router文件夹下的index.js中加入红色字体代码即可解决 import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(V ...
- [初学Python]编写一个最简单判断SQL注入的检测工具
0x01 背景 15年那会,几乎可以说是渗透最火的一年,各种教程各种文章,本人也是有幸在那几年学到了一些皮毛,中间因学业问题将其荒废至今.当初最早学的便是,and 1=1 和 and 1=2 这最简单 ...
- Optional容器类
一.Optional 容器类:用于尽量避免空指针异常 方法 /* * Optional.of(T t) : 创建一个 Optional 实例 * Optional.empty() : 创建一个空的 O ...
- CodeForce-792C Divide by Three(数学)
Divide by Three CodeForces - 792C 有一个正整数 n 写在黑板上.它有不超过 105 位. 你需要通过删除一些位使得他变成一个美丽的数,并且需要删除尽量少的位数.删除的 ...
- CentOS下安装libmcrypt失败
libmcrypt是什么?? 是加密算法扩展库---支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SA ...
- Sentry 监控 - Security Policy 安全策略报告
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- JDBC-1(概述&建立)
基于宋红康老师所讲JDBC所作笔记 1.JDBC概述 1.1 数据持久化 持久化:将数据保持到可掉电式存储设备中以供之后使用. 数据持久化意味着将内存中的数据保存到硬盘上加以固化,实现过程大多通过各种 ...