在Ubuntu上安装配置klee和llvm, 使用klee测试GNU Coreutils(结合官网指南)


在完成学习任务的过程中正好需要安装与配置klee和llvm,并且使用klee来测试GNU Coreutils。以下主要来自老师的安装指南,加上少量同学的讨论成果。经过10多次的失败,终于安装并运行成功,无法保证有些网站和下载包可能会因为墙的原因无法访问或下载。

相关环境参数

Virtual Box 6.1.4
Ubuntu 19.10

注意:在安装过程中会需要下载4个github仓库,注意目录的排列,推荐让这些仓库平级排布,如下图:
在这里插入图片描述

配置步骤

一、使用llvm 6.0 构建klee

根据官网的此篇指南(https://klee.github.io/build-llvm60/)来操作,但是有些步骤可能需要修改:
https://klee.github.io/build-llvm60/

  1. Step 3 : 我在此处安装的是STP solver,按照这个网址(https://klee.github.io/build-stp/)里的步骤操作。
    在这里插入图片描述
  2. Step 4 : 建议把网页上的 ./configure --make-llvm-lib 替换成:

./configure --make-llvm-lib --with-llvm-config <llvm-config的可执行文件的path>
eg: 在我的系统中这条指令为:./configure --make-llvm-lib --with-llvm-config /lib/llvm-6.0/bin/llvm-config

  1. 忽略官网上Step 5 的命令,执行这个:

python -m pip install wllvm

  1. 跳过Step 6 和 7
  2. Step 9 : 官网上这个命令 cmake <CMAKE_OPTIONS> <KLEE_SRC_DIRECTORY> 的具体参数为 (以我系统的为例,请把指令中那些path换成你系统中的):

cmake -DENABLE_SOLVER_STP=ON -DENABLE_POSIX_RUNTIME=ON -DENABLE_KLEE_UCLIBC=ON -DENABLE_UNIT_TESTS=OFF -DENABLE_SYSTEM_TESTS=OFF -DKLEE_UCLIBC_PATH=/home/joy/Public/klee-uclibc -DLLVM_CONFIG_BINARY=/lib/llvm-6.0/bin/llvm-config -DLLVMCC=/lib/llvm-6.0/bin/clang -DLLVMCXX=/lib/llvm-6.0/bin/clang /home//joy/Public/klee

  1. Step 10 : 在运行完命令 make 之后,运行:

sudo make install

  1. 跳过 Step 11 和 12, 完成。

二、 使用Klee来test GNU Coreutils

在学习官网 tutorial 之前, 先运行下列命令:

sudo apt-get install autoconf automake autopoint gperf texinfo
git clone git://git.sv.gnu.org/coreutils
cd coreutils
./bootstrap

然后再按照官网 (https://klee.github.io/tutorials/testing-coreutils/)的步骤开始学习,需注意以下几点:

  1. ** Step 2 : ** 把官网的 pip install --upgrade wllvm 替换成:

python -m pip install --upgrade wllvm

再执行官网上的这条命令:

export LLVM_COMPILER=clang

接着再执行以下命令 (to make sure that the `clang’ command points to the clang-6.0 you installed earlier run the following commands):
(注意修改path)

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang+±6.0 1000
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 1000
sudo update-alternatives --config clang
sudo update-alternatives --config clang++

  1. Step 3: 跳过官网上的这条命令 make -C src arch hostname , 并且别忘了在执行命令 find . -executable -type f | xargs -I '{}' extract-bc '{}' 之前执行下列命令:
    (注意修改path)

sudo update-alternatives --install /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-6.0 1000
sudo update-alternatives --config llvm-link

之后按照官网步骤走就好。

三、 常见问题

  1. 如果你遇到这些报错:

configure: error: in `/home/joy/Public/coreutils/obj-llvm’:
configure: error: C compiler cannot create executables

可以执行这条命令:

sudo -H python -m pip install wllvm

  1. 如果你在执行完 gcov echo 的结果中发现多出这种信息:

Cannot open source file …/src/echo.c

可以执行以下命令:

cd …
gcov src/echo

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值