在C ++应用程序中使用C函数时,代码覆盖率(gcov)失败

时间:2018-12-07 10:24:27

标签: c++ linker-errors gcov

我有一个使用某些C函数的C ++应用程序。我已经在extern“ C” {}中声明了这些C函数;而且它正在编译并且工作正常。 我使用'gcc'编译C代码,并使用'g ++'将该对象与C ++对象链接。

GCOV失败,并抛出以下错误:

hidden symbol `__gcov_init' in /usr/lib/gcc/x86_64-linux-gnu/5/libgcov.a(_gcov.o) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

我不知道,因为这对我来说是C和C ++代码的结合。任何人都知道为什么“ gcov”在链接阶段失败。如果我在应用程序中禁用了这些“ C”功能,则其“ gcov”不会给我该错误。

C函数我只是在初始化一个带有一些函数指针的结构。

我们非常感谢您的帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

我能够通过在链接时添加“ -lgcov”标志来修复它,但是我不知道为什么即使“ --coverage”标志应该为此链接也无法工作。仅在将C对象文件与C ++对象链接时才会出现此问题。

以下是答案的链接:link