2

尝试使用 gcov 编译我们的代码以实现代码覆盖率。收到以下错误:

/usr/lib/gcc/i686-redhat-linux/4.4.4/libgcov.a(_gcov_merge_add.o) 中的隐藏符号“__gcov_merge_add”被 DSO /usr/bin/ld 引用:最终链接失败:输出中的不可表示部分collect2: ld 返回 1 个退出状态

为 gcov 新添加了以下编译器选项:

-O0 -fprofile-arcs -ftest-coverage  -Xlinker -zmuldefs

和 ld 标志:

-fprofile-generate -fprofile-arcs

并与图书馆链接-lgcov

请建议。

4

2 回答 2

0

我们能够使用简单的--coverage -O0编译器选项启用代码覆盖率,并最终链接到-lgcovRHEL 6.* 版本。

-O0 -fprofile-arcs -ftest-coverage -Xlinker -zmuldefs然而,与我们不得不用来制作启用代码覆盖的二进制文件的 debian 不同。

于 2013-04-24T04:10:35.890 回答
0

这个问题的解决方案是

  • 编译-fprofile-arcs -ftest-coverage
  • 链接到-fprofile-arcs -lgcov

当我在链接时不使用时,我也遇到了同样的错误-fprofile-arcs

于 2018-12-21T06:01:04.387 回答