【问题标题】:Using lcov with gcc-8将 lcov 与 gcc-8 一起使用
【发布时间】:2023-04-10 16:09:02
【问题描述】:

我正在尝试确定我的测试覆盖率。为此,我使用更新版本的 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 lcov


    【解决方案1】:

    错误的来源很清楚,因为您使用 /usr/bin/gcov 得到了相同的结果。 /usr/bin/gcov 应该是来自已安装编译器的二进制文件的链接,但在您的情况下,该链接并不指向 gcc 8.2 安装中的二进制文件。

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

    如果您在 /usr/local/gcc8/bin 中有一个名为 gcov 的二进制文件,前面的答案也应该有效,因为如果您首先将该路径添加到您的环境 PATH 中,它将首先被选中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        最近更新 更多