SeaHorn是什么?
SeaHorn是一款验证软件
写作的目的
因为我换了好长时间才成功安装,你应该能想象得到这个好久是多少天了吧
github
https://github.com/seahorn/seahorn
这篇博客是我的吐槽和我一些经验的分享,这个软件小众,我是做研究用的,我估计应该不会有人再去安装这个吧。
这个软件提供了Docker安装,如果你只是需要用这个软件做验证,那么你完全可以使用docker来傻瓜操作。
这个软件是依赖于LLVM的,而且GitHub中说是依赖于LLVM5这个版本的,对于这样的说法,我们应该谨慎一点,因为使用高版本后可能出现一些莫名奇妙的错误,我选择了5.0这个版本,没想到最后还是中枪了,这个之后说。说到说到版本,如果有做android和机器学习的同学肯定对版本的不兼容有深刻的体会,我一同学使用tensorflow调试代码,花费了好久,后来把github中的readme仔仔细细阅读了之后,才发现,人家是支持特定版本的,卸载重装,搞定!!!
seahorn这类软件大多数都是makefile编译的,我不懂cmake,make这些区别,我做科研这么辛苦,也不想搞懂他,他对我而言只是个工具,我知道大体怎么用就行了。
按照readme中的方法是可以安装的,但是我却手贱,自己去官网上自己去网上下载了LLVM5.0。
再CLion配置中有提到一个额外库,我点进去发现,seahorn提供的llvm版本竟然是5.0.2。我真的没想到,按理说应该没事呀~~
最后再编译的过程中出现了gmpxx.h找不到的问题
这是因为gmp再编译的时候没有添加参数 --enable-cxx 这样编译出来的gmp就支持c++了。
最后
如果真有人需要这个软件,在安装过程中出现问题,可以查看Clion配置.md这个文件提供了另外一种安装参数的方法。
链接库
Seahorn安装需要一些第三方库,这些库已经提供了,就不要自己去单独安装了
库有Boost
, Z3
,LLVM5
,Yices2
。
这些库全部都被打包在:https://github.com/seahorn/seahorn-ext-deps/releases/tag/5.0-deep-dev
编译的时候添加参数就可以免去很多麻烦。
添加参数
-DBOOST_ROOT=/home/liangle/seahorn/seahorn-deps/boost
-DLLVM_DIR=/home/liangle/seahorn/seahorn-deps/LLVM5/lib/cmake/llvm
-DZ3_ROOT=/home/liangle/seahorn/seahorn-deps/z3
-DZ3_HOME=/home/liangle/seahorn/seahorn-deps/z3
-DYICES2_ROOT=/home/liangle/seahorn/seahorn-deps/yices2
apt库
通过apt还需要再安装一些第三方库
1 sudo apt install llvm-5
2 sudo apt install libboost-dev
3 sudo apt install subversion
4 sudo apt install libgmp-dev libgmpxx4ldbl
5 sudo apt install libncurses5-dev ncurses-doc