在使用gcov [srcfile]的命令生成.gcov文件的时候,提示如下错误, 无法生成gcov文件:
xxxxxxxxxxxx.gcno:version '402*', prefer '408*'
Segmentation fault
该问题是由于gcov在解析gcc编译器的时候出现不兼容的问题,gcc和clang编译器的演进是并行的,在gcc4.x版本时,出现了和clang编译不兼容得情况。
解决方法有两种:
1. 编译前解决
在编译前强行指定gcov版本,使编译后的gcno和gcda匹配当前gcov版本,方法如下:
2. 编译后解决
在编译前解决该问题的方法是强行转换,该方法虽然能保证使用lcov统计覆盖率的时候不报错,但不兼容问题从本质上没有得到解决,仍可能因为不兼容导致覆盖率统计异常。
更为稳妥的办法是,在lcov工具中使用--gcov-tool选项选择需要的gcov版本,如下
lcov --gcov-tool /usr/bin/gcov-4.2
其中gcov-4.2是gcov的可执行bin,安装gcc后,在gcc的安装目录下可以找到