gcc ld错误“libgcov.a(_gcov_merge_add.o)被DSO引用”

时间:2013-04-20 16:27:55

标签: c linux gcc rhel

尝试使用gcov编译代码覆盖的代码。出现以下错误:

  

隐藏符号`__gcov_merge_add'in   /usr/lib/gcc/i686-redhat-linux/4.4.4/libgcov.a(_gcov_merge_add.o)是   由DSO / usr / bin / ld引用:最终链接失败:不可代表   关于输出collect2的部分:ld返回1退出状态

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

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

和ld标志:

-fprofile-generate -fprofile-arcs

并与库-lgcov

相关联

请建议。

2 个答案:

答案 0 :(得分:0)

我们可以使用简单的--coverage -O0编译器选项启用代码覆盖,最后使用-lgcov链接RHEL 6. *版本。

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

答案 1 :(得分:0)

此问题的解决方案是

  • 使用-fprofile-arcs -ftest-coverage进行编译
  • -fprofile-arcs -lgcov链接

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