klee-2.1安装(按照这个博客,闭着眼都能成功!)
在安装过程中踩了很多坑,一度让我感到怀疑人生,因此我觉着有必要写一篇博客帮助后来的同学们避坑。
1.准备环境
安装以下依赖:
$ sudo apt-get install build-essential curl libcap-dev git cmake libncurses5-dev python3-minimal python-pip unzip libtcmalloc-minimal4 libgoogle-perftools-dev libsqlite3-dev doxygen
$ pip3 install tabulate wllvm
$ apt install gcc g++
同时也要检查下自己服务器是否安装了cmake。没有就去安装cmake。官方网址:https://cmake.org/download/
2.安装llvm
千万注意!klee2.1只能安装llvm9,安装别的版本会报错! llvm9不能使用apt安装,在这里使用源码安装。
$ git clone https://github.com/llvm/llvm-project.git
$ cd llvm-project/
$ git checkout remotes/origin/release/9.x
$ git branch
$ mkdir build
$ cd build
$ cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm
$ make -j 8
$ make install
注意执行make命令,-j的参数可以根据自己服务器的硬件配置调整。
3.安装约束求解器
$ wget https://github.com/Z3Prover/z3/archive/z3-4.8.8.zip
$ unzip z3-4.8.8.zip
$ cd z3-4.8.8
$ mkdir build
$ cd build
$ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
4.安装uclibc和posix运行环境
$ git clone https://github.com/klee/klee-uclibc.git
$ cd klee-uclibc
$ ./configure --make-llvm-lib
$ make -j 8
注意:默认情况下,环境中的 clang, llvm-config 都应该是 9.0 版本的,保持一致
5.编译klee
$ wget https://github.com/klee/klee/archive/v2.1.zip
$ unzip v2.1.zip
$ cd klee-v2.1
$ mkdir build
$ cd build
$ cmake -DENABLE_SOLVER_Z3=ON -DENABLE_POSIX_RUNTIME=ON -DENABLE_KLEE_UCLIBC=ON -DKLEE_UCLIBC_PATH=/home/haoxin/symbolic-execution/klee-uclibc-v1.2 -DLLVM_CONFIG_BINARY=/home/haoxin/corpus-compilers/llvm-9.0/llvm-src/build/bin/llvm-config -DLLVMCC=/home/haoxin/corpus-compilers/llvm-9.0/llvm-src/build/bin/clang -DLLVMCXX=/home/haoxin/corpus-compilers/llvm-9.0/llvm-src/build/bin/clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
$ make -j8
$ make install
注意cmake后面的路径要根据自己服务器安装的路径进行替换
make后可能会出现各种错误,比如:
Can’t find “gperftools/malloc_extension.h”
解决方法:
sudo apt install libunwind8-dev
git clone https://github.com/gperftools/gperftools.git
cd gperftools
sh autogen.sh
./configure
make all
make install
autogen.sh: 3: autoreconf: not found ubuntu
解决办法:
sudo apt-get install -y autoconf automake libtool
/usr/bin/ld: cannot find -lZLIB_LIBRARY-NOTFOUND
解决办法:
$ wget https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download -o zlib-1.2.8.tar.gz
$ tar zvfx zlib-1.2.8.tar.gz
$ ./configure
$ make
$ make check
$ sudo make install
klee-2.1安装(按照这个博客,闭着眼都能成功!)相关推荐
- 一键安装ghost轻博客
从强悍的全球最大的gaoji平台GitHUB上找到这个一键安装脚本,可以在常规的Ubuntu/Debian/CentOS VPS主机中快速安装Ghost轻博客程序.我们一起看看如何配置的. 一键脚本如 ...
- Hugo的安装和生成博客中遇到的问题
Hugo的安装和生成博客中遇到的问题 一.安装问题 1.软件下载速度 下载软件Git和Windows10版的hugo的时候网速过于缓慢,后来我到网上一查才明白是被国内限速了,因为GitHub的服务器是 ...
- 51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客
51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客 51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客 51CTO移动客户端可以 ...
- 小内存VPS主机一键快速安装GHost轻博客程序脚本和演示
小内存VPS一般我们都用来做什么?大部分应该都用来上网用途的,毕竟便宜且独立IP,比一般购买VIP账户好很多,而且稳定性高.其实,我们如果需要搭建小个人网站.博客的也可以使用,比如以前笔者有看到32M ...
- 博客园页面定制html代码,你要的博客园主题都有!!!
基于最近很多小伙伴加我微信想要我的博客园主题,那我就把博客园主题整理一下,送给喜欢的小伙伴,园友们喜欢可以收藏,关注,博客园主题仅供参考,博主顺便再多说一句,虽然我可以分享给你们,但是我更愿意你们加我 ...
- 什么是博客哦 我都不晓得
到底什么是博客嘛 我都不知道,但是我想了一下啊可能就是一种不知道的东西了 呵呵 我还是先发表一个属于我自己的薄薄吧 哈哈 ,到着哩完了哦. 其实我就是一个过客,好不好啊.....
- 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来...
上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...
- Github的介绍、使用、安装以及个人博客的搭建、美化
目录 一.绪论 1.1 目的 1.2 基本概念 仓库(Repository) 收藏(Star) 复制项目(Fork) 发起请求(Pull Request) 关注(Watch) 事务卡片(Issue) ...
- 安装部署halo博客
文章目录 前言 博客部署 备案 handsome主题 Mysql注意事项 端口映射 参考资料 前言 最近重新搭建了一下博客,使用的是Halo博客系统,现将搭建过程和配置的步骤记录一下,主题使用的是sa ...
最新文章
- 原创 | 基于AI的智能急性颅内出血类型检测
- Linux系统守护进程详解
- redis cluster集群选主
- oc 查看属性默认关键词
- mysql binary mode_mysql二进制文件操作语法(mysql binary log operate statements)
- RTOS原理与实现06:计数信号量实现
- CSDN 原力计划之最具技术影响力企业博客英雄榜 发布!
- Kubernetes详解(十七)——Pod存活性探针应用实战
- Sample DataBase 资源
- 注塑模具与吹塑模具的区别
- flash for linux安装教程,Flash Player 9 FOR Linux 的安装
- delphi低级键盘钩子(delphi2009测试通过)
- OpenStack 基础知识(学神教育学习笔记)
- Vue3 - Element plus 实现 “带分页“ 表格组件,实现跨页进行 “分页勾选“ 的多选功能(解决分页表格组件 <el-table> 跨页后已前勾选的行自动消失问题)详细示例解决教程
- 用webgl绘制一个彩色旋转立方体
- 红楼梦人物分析系统c语言,红楼梦人物分析.doc
- 从键盘读入一个字符,如果该字符是大写字母则转小写,如果该字符是小写字母则转大写,如果不是字符则输出不是字母。
- 打开Spyder出现You have missing dependencies
- VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明
- MT6167 RF芯片资料,MT6167参考设计下载
热门文章
- iphone SLO-MO, TIME-LAPSE, VIDEO,PANO
- Python_乌龟绘图
- TO_DATE()函数?
- 【POI1999】【BZOJ2936】降 水
- 【一种利用插值验证的FL隐私保护框架】VFL: A Verifiable Federated Learning
- XXL-JOB原理--任务调度中心执行器注册(三)
- 跟着彭亮一起学人工智能之深度学习--零基础学人工智能
- 1.20e 的maphack
- 一款新型的maphack
- 2017京东春招C/C++编程题(1)——站队