我正在使用最新版本的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
但我不能将pg
密钥与i686-android-linux-gcc
一起使用,有人知道为什么吗?我怎样才能使用它,也许我必须在NDK重建过程中使用一些额外的库/编译选项?
答案 0 :(得分: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。
P.S。似乎x86运行时根本不包含mcount
。在代码的其他地方定义它:
#if !( defined(_M_ARM) || defined(__arm__) )
int mcount = 0;
#endif
答案 1 :(得分:0)
看起来没有mcount
功能
我已经下载了Android Sources没有mcount
功能,只有1次调用它所以我认为它提供了这个错误。
我在android issues发现了同样的问题。