Build KLEE with LLVM 3.4 in Ubuntu-14.04.4-desktop-amd64
Fri, Apr 29, 2016 · #翻译 #学习 Tags: KLEE原文
Build KLEE with LLVM 3.4;
安装环境:Ubuntu-14.04.4-desktop-amd64
更新所有的package
添加universe源到/etc/apt/sources.list文件中deb http://cz.archive.ubuntu.com/ubuntu trusty main universe实际中需要将
cz.archive.ubuntu.com更改为当前最好用的镜像源。
添加完毕后,更新一下sudo apt-get update安装依赖库
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安装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-configBuild STP
KLEE是基于STP约束求解器的,首先build minisatgit 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文件,能够将此持久化Build uclibc and the POSIX environment model
如果需要将KLEE应用到真实的程序上,就需要启用KLEE POSIX runtime,而这需要uClibc C librarygit clone https://github.com/klee/klee-uclibc.git cd klee-uclibc ./configure --make-llvm-lib make -j2 cd ..获取KLEE源文件
git clone https://github.com/klee/klee.git cd klee配置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文件夹的全路径;编译
make make test sudo make install