4

我正在使用最新版本的 NDKandroid-ndk-r8b
我有一些文件是通过 NDK 的 Android 编译器构建的。 i686-android-linux-gcc
现在我想分析这些文件。
我试图用-pg选项重建它,但我收到一个错误:

/tmp/ccixJFcx.o: In function `main':
test1.C:(.text+0x17): undefined reference to `mcount'
collect2: ld returned 1 exit status

我想尝试使用i686-android-linux-gprof但没有成功编译-pg选项我无法做到。

例如让 test1.C 的来源为:

int main()
{
   return 0;
}

gcc我可以使用以下选项使用标准编译文件:
-g -O2 -m32 -Wa,--32 -Wl,-melf_i386 -pg 并将此文件与i686-android-linux-gprof

但是我不能使用pgkey i686-android-linux-gcc,有人知道为什么吗?我该如何使用它,也许我必须在 NDK 重建过程中使用一些额外的库/编译选项?

4

2 回答 2

3

您必须对您的 Android.mk 添加一些修改:

#include android-ndk-profiler.mk

LOCAL_CFLAGS := -pg
LOCAL_STATIC_LIBRARIES := andprof

LOCAL_LDLIBS += -llog

有关更多分步详细信息,请参阅http://code.google.com/p/android-ndk-profiler/wiki/Usage 。

PS似乎 x86 运行时根本不包含mcount. 在代码的其他地方定义它:

#if !( defined(_M_ARM) || defined(__arm__) )
   int mcount = 0;
#endif
于 2012-09-24T08:19:48.647 回答
0

好像没有什么mcount功能。
我已经下载了 Android Sources 没有任何mcount功能,只有 1 次调用,所以我认为它提供了这个错误。

我在android 问题上发现了同样的问题

于 2012-09-27T05:48:51.180 回答