【问题标题】:can gcov deal with shared object?gcov 可以处理共享对象吗?
【发布时间】:2011-04-12 04:51:13
【问题描述】:

我最近使用 gcov 来收集代码覆盖率信息。 gcov 与可执行应用程序配合得很好:),但是当我尝试加载 .so 文件时,我收到了这个错误:unknown symbol __gcov_merge_add。

然后我在 Google 上搜索,有人说将 -lgcov 添加到链接标志(LDFLAGS),我确实添加了这个选项,但它没有用。我也尝试了链接标志中的 --coverage 选项,无法摆脱这个错误。

有人可以帮忙解决这个问题吗?

谢谢。

【问题讨论】:

    标签: code-coverage gcov


    【解决方案1】:

    我也遇到过这个问题,但已经解决了。我只是在 CPPFLAGS 和 LDFLAGS 中都使用了 --coverage 选项。我认为这应该为您解决编译问题。

    虽然共享对象似乎仍然没有生成 .gcda 文件,但我不确定如何解决该问题。就像你说的,它适用于可执行文件,但共享对象似乎有一些问题。

    编辑: 显然,gcov 现在确实支持共享对象。昨天我做了大量的研究,发现了相互矛盾的答案,所以我邮寄了 gcc-help 列表。请参阅此处的线程:http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html。我还没有尝试根据答案解决我的问题,但我会在我这样做时回复。

    编辑 2: 共享对象确实可以与 gcov 一起使用(或者而不是使用 gcc 的 --cover 选项)。这里还有另一篇详细信息:gcov: producing .gcda output from shared library?。它还引用了上面的同一线程。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2017-02-07
      • 2019-06-13
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多