将lcov与gcc-8

时间:2018-08-28 12:08:15

标签: gcov lcov

我正在尝试确定我的testcoverage。为此,我使用较新版本的gcc编译程序:

CC=/usr/local/gcc8/bin/gcc  FC=/usr/local/gcc8/bin/gfortran ./configure.sh  -external cmake -d

使用--coverage选项进行编译后,我运行测试,并创建了*.gcda*.gcno*.o.provides.build文件。如果我运行类似的内容:

> $ /usr/local/gcc8/bin/gcov slab_dim.f90.gcda                                                                             [±develop ●]
File '/Local/tmp/fleur/cdn/slab_dim.f90'
Lines executed:0.00% of 17
Creating 'slab_dim.f90.gcov'

哪个告诉我,gcov运行正常。但是,如果我尝试对这些结果运行lcov:

lcov -t "result" -o ex_test.info -c -d CMakeFiles/

对于每个文件,我都会收到如下错误消息:

Processing fleur.dir/hybrid/gen_wavf.F90.gcda
/Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcno:version 'A82*', prefer '408R'
/Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcno:no functions found
geninfo: WARNING: gcov did not create any files for /Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcda!

这与我使用系统标准/usr/bin/gcov

时收到的错误消息相同

这使我相信lcov称为旧gcov,而不是新gcov。如何强制gcov使用新版本?

2 个答案:

答案 0 :(得分:0)

$PATH环境变量需要扩展/usr/local/gcc8/bin/

答案 1 :(得分:0)

由于使用/ usr / bin / gcov可以得到相同的结果,因此错误的原因很明显。 / usr / bin / gcov应该是从已安装的编译器指向二进制文件的链接,但是在您这种情况下,该链接并不指向gcc 8.2安装中的二进制文件。

您可以删除链接并重新创建该链接以指向正确的gcov,也可以设置诸如update-alternatives之类的内容来在更改默认编译器时更改gcov的版本。

如果您在/ usr / local / gcc8 / bin中有一个名为gcov的二进制文件,那么上一个答案也应该起作用,因为如果您将该路径添加到环境PATH中,则将首先选择它。