gcov:从共享库生成.gcda输出?

deu*_*ger 28 c++ automake gcc code-coverage gcov

是否可以通过运行链接到使用--coverage选项构建的共享库的可执行文件来生成gcov数据文件(.gcda文件)?

基本上,我有一个主库,它由多个编译成一个共享库的c ++文件组成,然后是一个名为"test"的子目录,其中包含一个链接到并测试主库的测试程序.一切都编译好,并为库源文件和测试源文件生成.gcno文件..gcda文件只为测试源文件生成,但我真的需要它们用于编译到共享库中的实际源文件.

有任何想法吗?

附加信息:
- 这是所有C++代码
- 一切都是使用由automake生成的make脚本构建的
- 在共享库中
为lib_la_CPPFLAGS和lib_la_LDFLAGS指定了--coverage选项Makefile.am - 为AM_CPPFLAGS和AM_LDFLAGS指定了--coverage选项在测试可执行文件Makefile.am中
- 测试源文件使用Google Test(C++单元测试框架)

编辑:固定间距问题

deu*_*ger 28

我终于通过gcc人员的帮助解决了这个问题.请参阅此处的主题:http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html.

事实证明.gcda文件被放在.libs目录中,因为那是共享库(.so)文件所在的位置.为了让gcov产生输出,我不得不将.gcda文件向上移动到源文件所在的位置.

此外,这是一个类似的线程,其他人遇到了一些相同的问题:gcov可以处理共享对象吗?.

  • @Tom:谢谢,我很高兴这很有帮助.我还要注意gcov有一个-o(--object-direct)选项,它也可以用来指定.gcda文件的位置. (2认同)