ubuntu下LLCov安装心得

本文记录了在Ubuntu 12.04 32位系统上安装LLCov的过程,包括从获取源码到解决编译问题的详细步骤。在安装过程中,作者遇到了LLCov的依赖文件丢失、配置文件错误等问题,并逐一解决,最终成功运行LLCov。
摘要由CSDN通过智能技术生成

这几天由于公司项目需要,我下载了LLCov的源码,结合llvm、clang的代码进行使用。感觉现在LLCov的名气并不是很大,网上搜寻到的相关资料也不是非常的多。通过这几天的努力和同事的帮忙,我成功地在自己的机子上将LLCov运行了起来。现在打算将整个过程分享给大家。


首先给出LLCov的github源码地址: https://github.com/choller/LLCov

还有两个参考网站,后面会用到:

http://clang.llvm.org/get_started.html   clang安装教程

http://llvm.org/docs/GettingStarted.html#requirements   llvm安装教程


我的系统配置:

OS: Ubuntu 12.04  32bits

CPU: Intel Core i7  4cores


LLCov是个什么东西呢?从字面上理解,就是LLVM 编译环境下的代码Covery统计程序。使用过gcov的人应该对此并不陌生。在LLCov的README中找到的相关定义是这样子的:


LLCov is a C/C++ code instrumentation tool that can be used to measure block coverage.
Unlike the popular GCOV coverage tool for GCC, LLCov instruments each basic block in 
the code with a call to an external function (provided by an arbitrary runtime library). 
In addition, the instrumentation can be limited to parts of the code (e.g. individual 
files, functions or blocks) to improve performance and focus on the relevant code parts.
LLCov is based on LLVM and integrates into the Clang C/C++ compiler.

简言之,LLCov在执行程序过程中会不断调用自己的一些库函数完成代码运行的统计工作。


首先从github上得到源码,解压缩后进入文件夹LLCov-master。其中INSTALL文件介绍了整个安装的过程,HOWTO介绍的是怎样运行LLCov. 整个过程看起来简单粗暴,但由于可能LLCov最后的更新时间比较久远,很多步骤并不完整。下面可以听我慢慢说来。


具体步骤如下:

1.  在svn上check out llvm和clang的源代码。

这一步没有什么问题,按照INSTALL的步骤做即可:

svn co http://llvm.org/svn/llvm-project/llvm/branches/release_33 llvm
export LLVM_ROOT=`pwd`/llvm
cd llvm/tools/
svn co http://llvm.org/svn/llvm-project/cfe/branches/release_33 clang

注意如果在一些公司的内部网络,svn无法下载资源的话,请设置svn的代理。对于我的情况,我是在/etc/subversion/servers里面设置http-proxy-host和http-proxy-port。同时注意到这里设置了环境变量LLVM_ROOT为 LLCov-master/llvm,但是使用export只是在当前bash中使用。如果重启bash这个变量就被重置了。解决的办法是直接修改~/.bashrc文件。修改环境变量的方法我就不多说了,上网搜一下都有的。


2. 在clang和llvm的代码中打入LLCov的补丁:

cd clang
patch -p0 < ../../../clang-llcov.patch
cd ../..
patch -p0 < ../llvm-llcov.patch
这一步也没有什么问题。并且从这一步我们就更清楚LLCov进行代码统计的运行机制了:LLCov会修改LLVM和clang的源代码,在里面加入一些自己的函数。LLVM和clang成功编译并执行的时候就会调用一些LLCov的库函数完成相应的功能。有点类似与寄生虫。有兴趣的朋友打开那两个patch文件,看看到底对哪些文件进行了修改。


3. 拷贝LLCov.cpp

cd ..
make srcinstall
接下来慢慢地就开始出问题了。首先cd ..后回到LLCov-master目录,输入make srcinstall的时候可能会遇到类似 “/build/Release+Asserts/bin/clang: No such file or directory”的问题。我们打开LLCov-master下面的Makefile文件看看srcinstall后面写的是&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值