搭建infer扫描C系列代码的环境
需求
使用infer扫描C系列的代码
环境要求:
clang编译器:扫描C系列代码使用的编译器,因为infer内部采用的是clang所以不能使用gcc代替
infer扫描器
cmake: 源码安装clang需要使用
安装cmake
下载
https://cmake.org/files/ 下载需要的版本以及操作系统对应的cmake安装包
配置环境变量
下载好之后直接解压然后把cmake中的bin文件夹下的内容添加到环境变量就好
tar -zxvf cmake-xxxxxxxxx.tar.gz
vim ~/.bashrc
//在.bashrc文件的最后一行添加
export PATH=/..../cmake-xxxx/bin/:$PATH
source ~/.bashrc
检查cmake是否安装成功
cmake --version
如果安装成功使用该指令后会输出cmake的版本信息,如果失败请检查环境变量是否配置正确,还有文件是否下载完整
安装clang
两种方式:
二进制安装
如果没有开发需求,想要直接使用该工具可以采取这个方式
下载文件
https://releases.llvm.org/download.html 在该网站上下载二进制文件
第一步,先找到对应的版本,第二步找到Pre-Built Binaries如果没有表示这个版本并没有对应的二进制文件,第三步找到对应的环境如果没有表示该版本的二进制文件不符合你的操作系统要求
配置环境变量
对二进制文件进行解压后,将其文件夹下的build文件夹下的bin文件夹添加到环境变量中就可以正常使用了
vim ~/.bashrc
//在.bashrc文件的最后一行添加
export PATH=/..../llvm-project.../bin/:$PATH
source ~/.bashrc
检查是否安装成功
$ clang --version
如果安装成功使用该指令后会输出clang的版本信息,如果失败请检查环境变量是否配置正确,还有文件是否下载完整
源码安装
想要获取最新版本或者想要对该项目进行二次开发可以采取这个方式
源码安装也分为两种方式
整体源码安装
将llvm的整个项目包括各种插件全部源码下载
下载文件
1 找到想要的版本
2 找到对应的source下的llvm-project monorepo文件下载,如果没有那么就不能这样安装了
编译
下载好之后进入llvm-project
//进入llvm-project然後在第一级目录下面新建一个Build文档并进入
mkdir build && cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
//这条指针给build文件夹添加各种配置文件
make && make install
//编译安装,也可以采用单独的make clang只对clang编译
配置环境变量
vim ~/.bashrc
//在.bashrc文件的最后一行添加
export PATH=/..../llvm-project.../bin/:$PATH
source ~/.bashrc
检查是否安装成功
# clang --version
按需求源码安装
选择性的安装llvm上的所有东西,这里只选择安装llvm和在llvm上使用的clang
下载文件
https://releases.llvm.org/download.html
第一步:先找到要下載的版本,
第二步:找到Sources标签
第三步:下载llvm source和Clang Source
配置文件
将下载的clang源文件放到llvm下的llvm/tools文件夹里
编译
在和llvm的同级目录下面执行指令
mkdir build && cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
//build根目录和llvm根目录是同级的
配置环境变量
vim ~/.bashrc
//在.bashrc文件的最后一行添加
export PATH=/..../build/bin/:$PATH
source ~/.bashrc
验证是否安装成功
clang --version
安装infer
从源码安装infer过于复杂,而且这里没有对infer有二次开发的需求,所以采用从二进制文件来安装infer
下载
https://github.com/facebook/infer/releases/download/v0.17.0/infer-linux64-v0.17.0.tar.xz
配置环境变量
vim ~/.bashrc
//在.bashrc文件的最后一行添加
export PATH=/..../infer-linux64-v0.17.0/bin/:$PATH
source ~/.bashrc
验证是否安装成功
infer --version
测试安装是否成功
在这个网站里下载测试案例:
https://github.com/facebook/infer/tree/master/examples/c_hello/
infer -- make
如何和图中结果一样就表示安装成功
参考博客:
https://infer.liaohuqiu.net/docs/getting-started.html
https://clang.llvm.org/get_started.html
https://blog.csdn.net/sealjin/article/details/45221209