Gcov能处理共享对象吗?

5
我最近正在使用gcov来收集代码覆盖率信息。gcov与可执行应用程序配合得很好,但是当我尝试加载.so文件时,出现了以下错误:unknown symbol __gcov_merge_add。
然后我在谷歌上搜索,有人说将 -lgcov 添加到链接标志(LDFLAGS)中,我确实添加了这个选项,但它没有起作用。我还尝试在链接标志中使用 --coverage 选项,但无法摆脱这个错误。
有人能帮忙解决这个问题吗?
谢谢。
1个回答

5

我也遇到了这个问题,但是后来解决了。我只是在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?。它还引用了上面提到的同一个线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接