KLEE安装



下面这段文字翻译于http://klee.github.io/getting-started/

    KLEE搭建于LLVM平台,下面这些安装步骤基于LLVM 2.9(稳定版本),基于新版本LLVM 3.4还处于试验阶段参考 click here。实际上现在LLVM都已经是4版本了。

1 依赖软件安装:包括g++, curl, dejagnu, subversion, bison, flex, bc, libcap-dev(el),可能还不全,具体到不同系统下,其命令为:
    $ sudo apt-get install g++ curl dejagnu subversion bison flex bc libcap-dev      # Ubuntu
    $ sudo yum install g++ curl dejagnu subversion bison flex bc libcap-devel       # Fedora

    在一些体系结构中,要再.bashrc文件中设置如下环境变量的设置:
    $ export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu 
    $ export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu

2015-1-25补:    上面这两句针对的是64为的操作系统,因为我安装的是i386,且32位的系统,所以在这里需要把x86_64-linux-gnu改为i386-linux-gnu。也不能不设置,否则在klee的make中会出错。

2  编译生成LLVM2.9:KLEE在linxux x86-64中进行过测试,在x86-32中可能会导致软件异常。
    安装llvm-gcc: 下载llvm-gcc(http://llvm.org/releases/download.html#2.9 ) ,在x86-64 Linux平台则需要获取LLVM-GCC 4.2 Front End Binaries for Linux x86-64并安装(http://llvm.org/releases/2.9/llvm-gcc4.2-2.9-x86_64-linux.tar.bz2 ). 之后把llvm-gcc添加到路径PATH中。
下载并且编译LLVM 2.9:
    $ tar zxvf llvm-2.9.tgz 
    $ cd llvm-2.9 
    $ ./configure --enable-optimized --enable-assertions 
    $ make

参数 --enable-optimized 可省略,如果使用新的kernels/glibc versions,可能会有一些兼容性问题。(吐槽:这些开源免费的货就是版本啊,兼容啊做的不够好。)

3 编译STP:KLEE缺省情况下使用STP作为约束求解器,下载链接(http://www.doc.ic.ac.uk/~cristic/klee/stp.html 这个版本和KLEE的应用结合没问题),当然也可以使用更新的版本。 具体编译生成命令如下:
    $ tar xzfv stp-r940.tgz 
    $ cd stp-r940 
    $ ./scripts/configure --with-prefix=`pwd`/install --with-cryptominisat2 
    $ make OPTIMIZE=-O2 CFLAGS_M32= install

在使用STP前,需先运行下面这个命令(STP文档中建议),当然也可以把这个命令写入到/etc/seurity/limits.conf中
    $ ulimit -s unlimited     #这个命令用于解除打开文件个数的限制。

4 编译uclibc和POSIX environment model,这个步骤可选,也就是可以不做。如果要做,按照下面步骤:
    $ git clone https://github.com/klee/klee-uclibc.git
    $ cd klee-uclibc
    $ ./configure --make-llvm-lib
    $ make -j2
    $ cd ..

5 下载KLEE,新建一个目录,在目录里面运行:
    $ git clone https://github.com/klee/klee.git

6 配置KLEE,进入KLEE目录,运行:
     $ ./configure --with-llvm=full-path-to-llvm --with-stp=full-path-to-stp/install --with-uclibc=full-path-to-klee-uclibc --enable-posix-runtime

      注意:如果你跳过步骤4,那么把上述命令中的参数--with-uclibc和 --enable-posix-runtime 移除.

7 编译KLEE:
    $ make ENABLE_OPTIMIZED=1

8 验证结果:
    $ make check 
    $ make unittests 

    我的按照这个步骤做了几次,检查都有问题,不过也能用,貌似一些变量、参数没有设置好。也就是除了上述步骤,其它还有些要设置的。我自己做都会零散设置,所以没法写出来。

2015-1-25补:最后总是make check有几个错误,看了一下,大概是因为klee.h文件没有包括在内的问题,可是设定了klee.h所在目录后,又有klee.h中关联的几个lib找不到,不知道问题出在哪里。不过能够正确make后,基本都可以使用了,只不过在自己的程序中include klee.h时会出错,包括klee的第二个例子中也有引入klee.h,所以编译不了,不过去掉后是可以的.

Later, I add kleeDir/include to environment variable. It can find klee.h, but still has some errors during "make check".

the result of make check is in the following :

********************
Testing Time: 365.22s
********************
Failing Tests (3):
    KLEE :: Concrete/_testingUtils.c
    KLEE :: Feature/ExprLogging.c
    KLEE :: Programs/pcregrep.c

  Expected Passes    : 131
  Expected Failures  : 1
  Unsupported Tests  : 23
  Unexpected Failures: 3
make[1]: *** [check-local] Error 1
make[1]: Leaving directory `/home/fjnuzs/Downloads/klee/test'
make: *** [check] Error 2

KLEE can work, I don't know if there is any problem.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值