gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:51:21 27 4
gpt4 key购买 nike

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

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

有什么想法吗?

附加信息:

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

最佳答案

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

事实证明,.gcda 文件被放置在 .libs 目录中,因为这是共享库 (.so) 文件所在的位置。为了让 gcov 产生输出,我必须将 .gcda 文件上移一级到源文件所在的位置。

另外,这里有一个类似的帖子,其他人也遇到了同样的问题:can gcov deal with shared object? .

关于c++ - gcov:从共享库生成 .gcda 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com