首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将lcov与gcc-8配合使用

将lcov与gcc-8配合使用
EN

Stack Overflow用户
提问于 2018-08-28 20:08:15
回答 2查看 2.1K关注 0票数 4

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

代码语言:javascript
复制
CC=/usr/local/gcc8/bin/gcc  FC=/usr/local/gcc8/bin/gfortran ./configure.sh  -external cmake -d

在使用--coverage选项编译之后,我运行我的测试,这将创建*.gcda*.gcno*.o.provides.build文件。如果我运行类似这样的命令:

代码语言:javascript
复制
> $ /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:

代码语言:javascript
复制
lcov -t "result" -o ex_test.info -c -d CMakeFiles/

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

代码语言:javascript
复制
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使用新版本?

EN

回答 2

Stack Overflow用户

发布于 2018-08-29 22:07:14

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

票数 0
EN

Stack Overflow用户

发布于 2018-12-31 16:35:20

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

您可以删除链接并重新创建它,使其指向正确的gcov,或者您可以设置类似update-alternatives的内容,以便在更改默认编译器时更改gcov的版本。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52057518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档