4

在使用 gcov 支持编译我的项目时,我面临以下错误

以下是我在编译时拥有的标志信息

编译器标志:

CXXFLAGS="-Wno-deprecated -g -ggdb -fprofile-arcs -ftest-coverage -fPIC"

链接器选项:

LINK_CMD="gcc -fprofile-arcs -fPIC"

以下是版本信息:

gcc 版本:

gcc 版本 4.1.2 20080704(红帽 4.1.2-44)

gcov版本:

gcov (GCC) 4.1.2 20080704 (红帽 4.1.2-44)

错误:

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcov.a(_gcov.o) 中的隐藏符号“__gcov_init”被 DSO /usr/bin/ld 引用:最终链接失败:输出中的不可表示部分collect2: ld 返回 1 个退出状态

你能帮我摆脱这个问题吗?

4

1 回答 1

6

我已经能够使用以下步骤在我自己的代码中解决这个问题:

  1. Make clean(删除我所有的 .o 和 lib 文件)。
  2. 确保每个源文件都有正确的选项 (-fprofile-arcs -ftest-coverage)。
  3. 确保将源文件编译到的每个共享库都指定 -lgcov
  4. 确保我将可执行文件与 -lgcov 链接。

另请参阅此答案此博客文章

于 2012-02-13T15:49:47.830 回答