求指教:X86上交叉编译出的执行文件到ARM上执行失败,提示missing essential tablesCANNOT LINK EXECUTABLE
开发机为X86+Ubuntu server 12.04, with Android NDK
目标机为运行Android4.0.3的ARM开发板,有root权限。
==============开发机 第1步 简单程序、以下是 aaa.c 内容================
===========================================================
int main(void) //最最简单的程序
{ int a = 3;
return 0;
}
===============开发机 第2步 编译OK、以下是 makefile 内容================
= 备注,该toolchain目录是通过Android NDK生成的 =
================================================================
GCC = /home/toolchain-API-15/bin/arm-linux-androideabi-gcc
CROSS_SYSROOT = /home/toolchain-API-15/sysroot
CROSS_CFLAGS = -I$(CROSS_SYSROOT)/usr/include -I.
CROSS_LDLIBS = -L$(CROSS_SYSROOT)/usr/lib -L.
$(GCC) aaa.c --sysroot=$(CROSS_SYSROOT) $(CROSS_CFLAGS) $(CROSS_LDLIBS) -o aaa
===============开发机 第3步 OK、检查aaa内容================
=======================================================
成功编译出的执行文件aaa,执行file aaa命令,显示
aaa: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), not stripped
===================目标机 第1步、执行 FAIL ===================
=======================================================
从ARM开发板上通过ftp到开发机上get到文件aaa,改为可执行权限后,
执行aaa失败,显示
/home/test-arm # ./aaa
link_image[1908]: 2597 missing essential tablesCANNOT LINK EXECUTABLE