我现在从事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'
有人能在这个问题上提供一些建议吗?
发布于 2013-09-13 04:09:34
试试这种方法:
使用以下选项编译要为其生成覆盖率的代码:
CFLAGS: -fprofile-arcs -ftest-coverage
LFLAGS: -lgcov --coverage
如果这不能解决这个问题,那么请提供一些关于您的应用程序结构的信息,即它的单个程序还是包含共享/静态库的应用程序等等。
希望这能帮上忙!
发布于 2013-05-31 18:20:42
您是否与-lgcov
链接?
如果您正在使用Makefile,那么查看它以帮助您会有很大帮助。
发布于 2019-02-25 10:00:23
您必须提供LDFLAGS来解决此问题。
LDFLAGS += " -lgcov --coverage"
https://stackoverflow.com/questions/16682606
复制相似问题