我准备了下面一份C语言示例代码,按照以下步骤可以在Android操作系统上运行:
/*test.c file*/
#include <stdio.h>
int
main(int argc, char **argv)
{
printf("Android Test Application.\n");
return 0;
}
$ arm-none-linux-gnueabi-gcc -o test test.c -Wall
我将二进制文件--test--复制到了目标设备的"/system/bin"目录中。
但是当我尝试在目标系统上运行交叉编译的二进制文件时,出现了以下错误:
$ pwd
/system/bin
$ ./test
bash: ./test: 没有那个文件或目录
$ ls -al | grep test
-rwxr-xr-x 1 0 0 8384 2011-12-22 15:26 test
尽管二进制文件--test--已经在"/system/bin"目录中。
我的交叉编译器是
$ arm-none-linux-gnueabi-gcc --version
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q1-203) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. 这是自由软件;请参见拷贝条件的源代码。 没有任何形式的保证,包括针对特定用途的适销性或适用性的保证。
为什么会出现以下错误:
bash: ./test: 没有那个文件或目录
readelf
查找加载器。在设备上尝试ldd ./test
。还可以尝试静态链接可执行文件,看看是否能够正常工作。 - Matls -al | grep date
得到的权限是lrwxrwxrwx
。也许这是一个权限问题? - Wesley Wiser