1

我正在尝试使用 gcov 编译一个 android .so 文件并得到以下链接错误:在函数全局构造函数中键入 0_XXX:../../source/file1.cpp:2661: 错误:未定义对 '__gcov_init' 的引用在函数 .LPBX0:file1.cpp(.data.rel+0x24) 中:错误:未定义的对 '__gcov_merge_add' 的引用在函数全局构造函数中键入 0_funcname:../../source/file2.cpp:2154:错误:未定义在函数 .LPBX0:file2.cpp(.data.rel+0x24) 中引用“__gcov_init”:错误:未定义对“__gcov_merge_add”的引用”collect2:ld 返回 1 退出状态 make:* [xxx.so] 错误 1

我的 android makefile 更改:CFLAGS += --coverage,LOCAL_LDLIBS += --coverage。我似乎无法找到丢失符号的位置。我的 android 工具链 gcc 版本 4.6。有任何想法吗?谢谢。

4

2 回答 2

0

您可以在 Android.mk 中添加以下行:

LOCAL_CFLAGS += -fprofile-arcs -ftest-coverage

LOCAL_LDFLAGS += -lgcov

于 2013-05-30T01:31:37.857 回答
0

用这 3 行更改 Android.mk

1) LOCAL_LDLIBS += -l(libgcov 的绝对路径或相对路径)

例如:LOCAL_LDLIBS += -l/home/souradeep.c/JFLTEATT/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/lib/gcc/arm-eabi/4.6.x-google/libgcov 。一个

2) LOCAL_LDFLAGS += -fprofile-arcs (这对于链接重要的符号未找到问题是必需的)

3) LOCAL_CFLAGS += -fprofile-arcs -ftest-coverage

                   or

3) LOCAL_CPPFLAGS += -fprofile-arcs -ftest-coverage

享受.......................................

于 2013-07-13T11:08:29.247 回答