使用gcov生成覆盖率时,提示version '402*', prefer '408*'

xiaoxiao2021-02-28  90

在使用gcov [srcfile]的命令生成.gcov文件的时候,提示如下错误, 无法生成gcov文件:

xxxxxxxxxxxx.gcno:version '402*', prefer '408*' Segmentation fault

该问题是由于gcov在解析gcc编译器的时候出现不兼容的问题,gcc和clang编译器的演进是并行的,在gcc4.x版本时,出现了和clang编译不兼容得情况。

解决方法有两种:

1. 编译前解决

在编译前强行指定gcov版本,使编译后的gcno和gcda匹配当前gcov版本,方法如下:

LOCAL_CFLAGS += -Xclang -coverage-cfg-checksum -Xclang -coverage-no-function-names-in-data -Xclang -coverage-version='408*'

2.  编译后解决

在编译前解决该问题的方法是强行转换,该方法虽然能保证使用lcov统计覆盖率的时候不报错,但不兼容问题从本质上没有得到解决,仍可能因为不兼容导致覆盖率统计异常。

更为稳妥的办法是,在lcov工具中使用--gcov-tool选项选择需要的gcov版本,如下

lcov --gcov-tool /usr/bin/gcov-4.2

其中gcov-4.2是gcov的可执行bin,安装gcc后,在gcc的安装目录下可以找到

转载请注明原文地址: https://www.6miu.com/read-51602.html

最新回复(0)