我正在使用最新版本的 NDK android-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
但是我不能在 i686-android-linux-gcc
中使用 pg
key ,有人知道为什么吗?我该如何使用它,也许我必须在 NDK 重建过程中使用一些额外的库/编译选项?
最佳答案
您必须对您的 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了解更多分步详细信息。
P.S. x86 运行时似乎根本不包含 mcount
。在代码的其他地方定义它:
#if !( defined(_M_ARM) || defined(__arm__) )
int mcount = 0;
#endif
关于android - 使用 pg 选项在 Android 上进行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472011/