我正在尝试确定我的测试覆盖率。为此,我使用较新版本的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使用新版本?
发布于 2018-08-29 22:07:14
/usr/local/gcc8/bin/需要将$PATH环境变量扩展为
发布于 2018-12-31 16:35:20
错误的来源很清楚,因为使用/usr/bin/gcov可以得到相同的结果。/usr/bin/gcov应该是指向已安装编译器中的二进制文件的链接,但在您的示例中,该链接并不指向安装的gcc 8.2中的二进制文件。
您可以删除链接并重新创建它,使其指向正确的gcov,或者您可以设置类似update-alternatives的内容,以便在更改默认编译器时更改gcov的版本。
如果您在/usr/local/gcc8/bin中有一个名为gcov的二进制文件,那么前面的答案应该也适用,因为如果您首先将该路径添加到环境路径中,它将首先被选中。
https://stackoverflow.com/questions/52057518
复制相似问题