kleeg,klayout安装教程



下面这段文字翻译于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-devel),可能还不全,具体到不同系统下,其命令为:
    $ 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-gcchttp://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.

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注