SVF-tools安装笔记
网络链接
SVF-tools是一个程序分析的工具,github地址如下:
SVF-tools包含多个项目,其中主项目SVF的地址:
https://github.com/SVF-tools/SVF
该页面下有setup guide的链接:
https://github.com/svf-tools/SVF/wiki/Setup-Guide#getting-started
Ubuntu16安装SVF的问题
最早安装的系统是Ubuntu 16,安装SVF-tools碰到了很多问题。
按照setup guide指引,只需三步即可。
git clone https://github.com/SVF-tools/SVF.git
cd SVF
source ./build.sh
前两步基本都能完成,进入build以后出现很多问题。最主要的两个问题是build过程中还需要下载三个东西,有时会超时,造成安装失败。另外一个问题就是提示GLIBC版本不匹配。
与此同时,setup guild中第二种与第三种安装方法也失败了。
虚拟机安装SVF的问题
在虚拟机中按照本文后面的操作安装SVF,会卡在35%的位置,最后似乎也没死机,但就是不动了。
Ubuntu 18.04.5 LTS安装SVF-tools
安装Ubuntu
首先重新安装ubuntu 18.04.5 LTS desktop版本,使用U盘安装还是比较方便的。
更换apt源
链接如下,根据Ubuntu版本,再根据提示操作即可
https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
更换完毕以后记得
sudo apt-get update
安装build-essential
使用apt安装build-essential以及其他的必要工具。本文安装的版本如下
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GNU ld (GNU Binutils for Ubuntu) 2.30
Copyright (C) 2018 Free Software Foundation, Inc.
这个程序是自由软件;您可以遵循GNU 通用公共授权版本 3 或
(您自行选择的) 稍后版本以再次散布它。
这个程序完全没有任何担保。
cmake version 3.10.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
手动下载安装包
首先要下载SVF-tools本身。
下载完成以后,进入SVF目录。SVF的build.sh文件能够自动下载所需的主要依赖,但是比较慢,特别是llvm比较大,容易失败。因此手动下载。对照build.sh的内容,需要手动下载三个东西,链接如下。
LLVM:
https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz。
Z3:
https://github.com/Z3Prover/z3/releases/download/z3-4.8.8/z3-4.8.8-x64-ubuntu-16.04.zip
Test-Suite:
https://github.com/SVF-tools/Test-Suite.git
下载完成以后,解压缩即可。LLVM和z3均可随意放置,但Test-Suite解压缩以后需要将其整个拷贝到SVF目录之下,并且必须命名为Test-Suite
。要么就更改build.sh文件。总之二者要匹配。
设置环境变量
更改环境变量,在/etc/profile
中加入如下内容:
export SVFHOME="/home/xxx/SVF-master"
export LLVM_DIR="/home/xxx/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04"
export Z3_DIR="/home/xxx/z3-4.8.8-x64-ubuntu-16.04"
export PATH=$PATH:"$LLVM_DIR/bin"
其中xxx
是用户主目录名。
更改完以后,最好重启一下。因为source
只针对本次shell有效,经常混乱。
最后一个问题
此时在运行build.sh
即可运行,build都很顺利,最后,ld的时候提示
/usr/bin/ld: cannot find -ltinfo
之类的错误。
使用apt再安装一个包即可
sudo apt-get install libtinfo-dev
重新build一遍,成功。