C++ gcov工具合并:";不是gcov数据文件“;

C++ gcov工具合并:";不是gcov数据文件“;,c++,c,linux,gcc,gcov,C++,C,Linux,Gcc,Gcov,我正在尝试使用gcov工具为几个源文件合并一些现有的覆盖率数据(不是我自己创建的)。但是,当我调用gcov工具merge dir1 dir2时,其中dir1和dir2是包含我打算合并的.gcda文件的目录,我反而会遇到/SOME_FILE.gcda:dir1中每个文件的gcov数据文件错误 起初我假设覆盖率文件一定已损坏,但随后我查看了gcc-6.3.0(它与我安装的gcov工具的版本相匹配)源代码(libgcc/libgcov util.c)仅当某些.gcda文件的前几个字节与神奇的ASCII

我正在尝试使用gcov工具为几个源文件合并一些现有的覆盖率数据(不是我自己创建的)。但是,当我调用
gcov工具merge dir1 dir2
时,其中
dir1
dir2
是包含我打算合并的
.gcda
文件的目录,我反而会遇到
/SOME_FILE.gcda:
dir1
中每个文件的
gcov数据文件错误

起初我假设覆盖率文件一定已损坏,但随后我查看了
gcc-6.3.0
(它与我安装的
gcov工具的版本相匹配)源代码(
libgcc/libgcov util.c
)仅当某些
.gcda
文件的前几个字节与神奇的ASCII字符串“gcda”不匹配时,才会打印该错误消息。然而,
hd dir1/SOME_FILE.gcda
产生:

00000000 67 63 64 61 36 30 33 2a 17 68 64 3d 01 00 00 00 00 | gcda603*.hd=......|

等等


以前有人处理过类似的事情吗?

我发现,这是一个持久性问题。我看到的是gcc代码中的错误检查,它实际上同时测试了little和big-endian.gcda文件。gcov工具不这样做(我觉得很奇怪),所以您似乎必须在一台与生成覆盖率数据的机器具有相同端点的机器上执行它