Build KLEE with LLVM 3.4 in Ubuntu-14.04.4-desktop-amd64

原文
Build KLEE with LLVM 3.4;
安装环境:Ubuntu-14.04.4-desktop-amd64

  1. 更新所有的package
    添加universe源到/etc/apt/sources.list文件中

    deb http://cz.archive.ubuntu.com/ubuntu trusty main universe
    

    实际中需要将cz.archive.ubuntu.com更改为当前最好用的镜像源。
    添加完毕后,更新一下

    sudo apt-get update
    
  2. 安装依赖库
    KLEE的依赖库和LLVM相同,在LLVM网站中有介绍。一般需要如下程序和库文件

    sudo apt-get install build-essential curl git bison flex bc libcap-dev git cmake libboost-all-dev libncurses5-dev python-minimal python-pip unzip
    

    一些情况下,需要设置环境变量,最好把他们放在.bashrc这样的配置文件中

    export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
    export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
    
  3. 安装LLVM3.4
    添加LLVM源/etc/apt/sources.list文件中

    deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.4 main
    deb-src http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.4 main
    

    添加之后,还需要添加key

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -
    

    之后,进行更新,安装LLVM3.4

    sudo apt-get update
    sudo apt-get install clang-3.4 llvm-3.4 llvm-3.4-dev llvm-3.4-tools
    

    最后,确保,PATH中有llvm-config

    sudo ln -sf /usr/bin/llvm-config-3.4 /usr/bin/llvm-config
    
  4. Build STP
    KLEE是基于STP约束求解器的,首先build minisat

    git clone https://github.com/stp/minisat.git
    cd minisat
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr/ ../
    sudo make install
    cd ../../
    

    接下来,build STP。
    因为,Shared STP libraries会导致KLEE出现问题,因此需要禁用;
    python interface需要Shared STP libraries支持,因此,也禁用

    git clone https://github.com/stp/stp.git
    mkdir stp/build
    cd stp/build
    cmake -DBUILD_SHARED_LIBS:BOOL=OFF -DENABLE_PYTHON_INTERFACE:BOOL=OFF ..
    make
    sudo make install
    cd ..
    

    按照STP的文档说明,在使用STP之前应该运行如下指令(对于KLEE来说也是这样)

    ulimit -s unlimited
    

    通过编辑/etc/security/limits.conf文件,能够将此持久化

  5. Build uclibc and the POSIX environment model
    如果需要将KLEE应用到真实的程序上,就需要启用KLEE POSIX runtime,而这需要uClibc C library

    git clone https://github.com/klee/klee-uclibc.git
    cd klee-uclibc
    ./configure --make-llvm-lib
    make -j2
    cd ..
    
  6. 获取KLEE源文件

    git clone https://github.com/klee/klee.git
    cd klee
    
  7. 配置KLEE

    ./configure --with-stp=/full/path/to/stp/build --with-uclibc=/full/path/to/klee-uclibc --enable-posix-runtime
    

    /full/path/to/stp/build根据实际位置,替换为stp/build文件夹的全路径;
    /full/path/to/klee-uclibc根据实际位置,替换为klee-uclibc文件夹的全路径;

  8. 编译

    make
    make test
    sudo make install
    

Comments