在安装过程中踩了很多坑,一度让我感到怀疑人生,因此我觉着有必要写一篇博客帮助后来的同学们避坑。

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安装(按照这个博客,闭着眼都能成功!)相关推荐

  1. 一键安装ghost轻博客

    从强悍的全球最大的gaoji平台GitHUB上找到这个一键安装脚本,可以在常规的Ubuntu/Debian/CentOS VPS主机中快速安装Ghost轻博客程序.我们一起看看如何配置的. 一键脚本如 ...

  2. Hugo的安装和生成博客中遇到的问题

    Hugo的安装和生成博客中遇到的问题 一.安装问题 1.软件下载速度 下载软件Git和Windows10版的hugo的时候网速过于缓慢,后来我到网上一查才明白是被国内限速了,因为GitHub的服务器是 ...

  3. 51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客

    51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客 51CTO移动客户端可以在线下载安装啦 - 51CTO博客开发 - 51CTO技术博客 51CTO移动客户端可以 ...

  4. 小内存VPS主机一键快速安装GHost轻博客程序脚本和演示

    小内存VPS一般我们都用来做什么?大部分应该都用来上网用途的,毕竟便宜且独立IP,比一般购买VIP账户好很多,而且稳定性高.其实,我们如果需要搭建小个人网站.博客的也可以使用,比如以前笔者有看到32M ...

  5. 博客园页面定制html代码,你要的博客园主题都有!!!

    基于最近很多小伙伴加我微信想要我的博客园主题,那我就把博客园主题整理一下,送给喜欢的小伙伴,园友们喜欢可以收藏,关注,博客园主题仅供参考,博主顺便再多说一句,虽然我可以分享给你们,但是我更愿意你们加我 ...

  6. 什么是博客哦 我都不晓得

    到底什么是博客嘛  我都不知道,但是我想了一下啊可能就是一种不知道的东西了  呵呵  我还是先发表一个属于我自己的薄薄吧  哈哈 ,到着哩完了哦. 其实我就是一个过客,好不好啊.....

  7. 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来...

    上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...

  8. Github的介绍、使用、安装以及个人博客的搭建、美化

    目录 一.绪论 1.1 目的 1.2 基本概念 仓库(Repository) 收藏(Star) 复制项目(Fork) 发起请求(Pull Request) 关注(Watch) 事务卡片(Issue) ...

  9. 安装部署halo博客

    文章目录 前言 博客部署 备案 handsome主题 Mysql注意事项 端口映射 参考资料 前言 最近重新搭建了一下博客,使用的是Halo博客系统,现将搭建过程和配置的步骤记录一下,主题使用的是sa ...

最新文章

  1. 原创 | 基于AI的智能急性颅内出血类型检测
  2. Linux系统守护进程详解
  3. redis cluster集群选主
  4. oc 查看属性默认关键词
  5. mysql binary mode_mysql二进制文件操作语法(mysql binary log operate statements)
  6. RTOS原理与实现06:计数信号量实现
  7. CSDN 原力计划之最具技术影响力企业博客英雄榜 发布!
  8. Kubernetes详解(十七)——Pod存活性探针应用实战
  9. Sample DataBase 资源
  10. 注塑模具与吹塑模具的区别
  11. flash for linux安装教程,Flash Player 9 FOR Linux 的安装
  12. delphi低级键盘钩子(delphi2009测试通过)
  13. OpenStack 基础知识(学神教育学习笔记)
  14. Vue3 - Element plus 实现 “带分页“ 表格组件,实现跨页进行 “分页勾选“ 的多选功能(解决分页表格组件 <el-table> 跨页后已前勾选的行自动消失问题)详细示例解决教程
  15. 用webgl绘制一个彩色旋转立方体
  16. 红楼梦人物分析系统c语言,红楼梦人物分析.doc
  17. 从键盘读入一个字符,如果该字符是大写字母则转小写,如果该字符是小写字母则转大写,如果不是字符则输出不是字母。
  18. 打开Spyder出现You have missing dependencies
  19. VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明
  20. MT6167 RF芯片资料,MT6167参考设计下载

热门文章

  1. iphone SLO-MO, TIME-LAPSE, VIDEO,PANO
  2. Python_乌龟绘图
  3. TO_DATE()函数?
  4. 【POI1999】【BZOJ2936】降 水
  5. 【一种利用插值验证的FL隐私保护框架】VFL: A Verifiable Federated Learning
  6. XXL-JOB原理--任务调度中心执行器注册(三)
  7. 跟着彭亮一起学人工智能之深度学习--零基础学人工智能
  8. 1.20e 的maphack
  9. 一款新型的maphack
  10. 2017京东春招C/C++编程题(1)——站队