我在MacOS上从源代码中再次建立AndroidEagleEye库。当我使用ndk-build
命令编译时,我遇到了这个错误:
jni / base / hook.c:42:5:错误:asm中未知的寄存器名称'r0' :“r0”,“r1”,“r7”
以下是带有该错误的代码:
void inline hook_cacheflush(unsigned int begin, unsigned int end)
{
const int syscall = 0xf0002;
__asm __volatile (
"mov r0, %0\n"
"mov r1, %1\n"
"mov r7, %2\n"
"mov r2, #0x0\n"
"svc 0x00000000\n"
:
: "r" (begin), "r" (end), "r" (syscall)
: "r0", "r1", "r7"
);
}
如何修复此错误。
答案 0 :(得分:1)
ndk-build
为所有Android架构构建。您还需要为其他体系结构包含asm(并使用适当的预处理器宏保护它们),或者在Application.mk中设置APP_ABI := armeabi armeabi-v7a
。