相关疑难解决方法(0)

当使用libtool和gcov时,"隐藏符号`atexit'被DSO引用"

我有一个C++项目,它使用GNU Autotools构建脚本和libtool进行链接.最近我通过确保gcov添加了代码覆盖率检测

GCOV_CFLAGS="-fprofile-arcs -ftest-coverage"
GCOV_LDFLAGS="-fprofile-arcs -ftest-coverage"
Run Code Online (Sandbox Code Playgroud)

..get 分别包含在我的CFLAGSLDFLAGS.在OS X 10.7.4上使用g ++ - 4.2(由自制软件安装),一切正常.

在使用g ++ 4.6.3的Ubuntu 12.04上,libtool无法链接我的一个测试:

/bin/bash ./libtool --tag=CXX   --mode=link g++ -Wall -Wextra -Werror -ansi -fprofile-arcs -ftest-coverage -g -O0 -fprofile-arcs -ftest-coverage -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib   -o myproj/inttests/locale_test myproj/inttests/locale_test.o myproj/app/libapp.la -lboost_thread-mt -lboost_system-mt -pthread -llog4cplus  
libtool: link: g++ -Wall -Wextra -Werror -ansi -fprofile-arcs -ftest-coverage -g -O0 -fprofile-arcs -ftest-coverage -Wl,-rpath -Wl,/usr/local/lib -o myproj/inttests/.libs/locale_test myproj/inttests/locale_test.o -pthread  -L/usr/local/lib myproj/app/.libs/libapp.so -lboost_thread-mt -lboost_system-mt /usr/lib/liblog4cplus.so -pthread
/usr/bin/ld: myproj/inttests/.libs/locale_test: hidden symbol `atexit' in /usr/lib/x86_64-linux-gnu/libc_nonshared.a(atexit.oS) is …
Run Code Online (Sandbox Code Playgroud)

ubuntu linker gcc libtool gcov

11
推荐指数
1
解决办法
1万
查看次数

生成由单独的测试类调用的 C++ 静态库的测试覆盖率

我正在使用 QT Creator 来处理一个 C++ 中型项目。

项目结构基本上是这样的

  1. 项目

    • A组
      • 图书馆A1
    • B组
      • 图书馆B1
      • 图书馆B2
      • ...ETC
    • 测试

      • LibA1_测试
      • LibB1_测试
      • LibB2_测试
      • ...ETC

这些库由测试项目中的可执行文件进行测试。我已经设法在启用 gcov 的情况下自行编译测试,并使用 lcov 生成代码覆盖率报告,但他们显示的覆盖率只是测试用例,而不是我正在测试的实际代码。我也尝试使用 gcov 编译静态库,但是当我对这些库运行测试时,它不会生成任何 gcov 输出文件。

如何通过将我的项目库与测试链接来生成 gcov 输出文件?我想看看我的单元测试是否存在任何差距。

c++ gcc code-coverage gcov qt-creator

5
推荐指数
1
解决办法
4066
查看次数

gcov最终链接失败

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

以下是编译时的标志信息

编译器标志:

CXXFLAGS="-Wno-deprecated -g -ggdb -fprofile-arcs -ftest-coverage -fPIC"
Run Code Online (Sandbox Code Playgroud)

链接器选项:

LINK_CMD="gcc -fprofile-arcs -fPIC"
Run Code Online (Sandbox Code Playgroud)

以下是版本信息:

gcc版本:

gcc版本4.1.2 20080704(Red Hat 4.1.2-44)

gcov版本:

gcov(GCC)4.1.2 20080704(Red Hat 4.1.2-44)

错误:

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

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

gcc gcov

3
推荐指数
1
解决办法
5523
查看次数

标签 统计

gcc ×3

gcov ×3

c++ ×1

code-coverage ×1

libtool ×1

linker ×1

qt-creator ×1

ubuntu ×1