![]() |
聪明的椅子 · html下划线虚线代码 - CSDN文库· 3 月前 · |
![]() |
怕老婆的沙发 · kafka发送数据报错: Error ...· 9 月前 · |
![]() |
没有腹肌的甘蔗 · 【Unity】Unity在运行时崩溃了怎么办 ...· 1 年前 · |
![]() |
谦和的马克杯 · Qlistwidget刷新界面问题--突然有 ...· 1 年前 · |
![]() |
刀枪不入的啄木鸟 · javascript - ...· 1 年前 · |
我现在从事C代码覆盖率研究,并遇到以下问题,GCC版本4.4.6:
CFLAGS = --coverage
和链接器选项
LDFLAGS := --coverage
或
LOCAL_LDLIBS := --coverage
,并得到错误:
undefined reference to '__gcov_init'" and "undefined reference to '__gcov_merge_add'
LOCAL_LDFLAGS := --coverage
,并获得链接错误:
libgcov.a(_gcov.o): in function __gcov_set_sampling_rate: undefined reference to '__gcov_sampling_rate' libgcov.a(_gcov.o): in function gcov_exit: undefined reference to '__gcov_pmu_profile_filename' libgcov.a(_gcov.o): in function __gcov_init: undefined reference to '__gcov_pmu_profile_options' '__gcov_pmu_top_n_address'
有人能在这个问题上提供一些建议吗?
您是否与
-lgcov
链接?
如果您正在使用Makefile,那么查看它以帮助您会有很大帮助。
试试这种方法:
使用以下选项编译要为其生成覆盖率的代码:
CFLAGS: -fprofile-arcs -ftest-coverage
LFLAGS: -lgcov --coverage
如果这不能解决这个问题,那么请提供一些关于您的应用程序结构的信息,即它的单个程序还是包含共享/静态库的应用程序等等。
希望这能帮上忙!
我不确定到底是哪一种改变对我起了作用,但我认为这是
-fprofile-generate
标志。使用GNAT,我转到左边的
Switches
选项卡,然后在顶部选择
Ada Linker
选项卡。然后,我为
Code Coverage
启用了复选框。哦,是的,我发现在同一区域的
Builder
选项卡上,如果启用
Recompile if switches changed
复选框,它可以节省大量牙齿咬咬。对专业人士来说,事情可能会慢下来,但我发现这很有帮助。
我发现我不得不把“-lgcov”放在被描绘的物体的右边,而不是在旗中。就像。gcc -pg -o myprog myprog.o -lgmp.a -lgcov
您必须提供LDFLAGS来解决此问题。
LDFLAGS += " -lgcov --coverage"
我对gcov函数(
undefined reference to '__gcov_exit'
)有未定义的引用,而我试图使用C++测试工具(CppUTest)在C项目上启用覆盖率。构建系统由CMake处理。
编译器和gcov是在同一个版本上对齐的(
gcc --version
、
g++ --version
和
gcov --version
给出了相同的版本),但我的构建系统似乎以前配置为使用gcc 5,而使用了g++ 8和gcov 8(导致链接器增加了一个包含的目录: usr/lib/gcc/x86_64-linux-gnu/5)。
我清理了构建树,并再次生成它,这要归功于修复错误的CMake。
我也看到了这个问题,因为上面的大多数答案都表明,在链接时,我们需要添加lcov/gcov库。我们正在使用cmake,在CmakeLists.txt文件中我们丢失了
target_link_libraries(${TARGET_NAME} PRIVATE gcov)
当然,除了构建标志“--覆盖率”(Pls注意到我们可以单独使用"--coverage“或"-fprofile-arcs coverage”)之外,还需要这样做。
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
![]() |
聪明的椅子 · html下划线虚线代码 - CSDN文库 3 月前 |