【问题标题】:gcc ld error "libgcov.a(_gcov_merge_add.o) is referenced by DSO"gcc ld 错误“libgcov.a(_gcov_merge_add.o) 被 DSO 引用”
【发布时间】:2013-04-13 21:47:43
【问题描述】:

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

隐藏符号`__gcov_merge_add' /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

请提出建议。

【问题讨论】:

    标签: c linux gcc rhel


    【解决方案1】:

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

    然而,在我们必须使用-O0 -fprofile-arcs -ftest-coverage -Xlinker -zmuldefs 来生成启用代码覆盖的二进制文件的 debian 中,情况并非如此。

    【讨论】:

      【解决方案2】:

      这个问题的解决方案是

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

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

      【讨论】:

        猜你喜欢
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 2016-06-28
        • 2013-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多