在Android上执行a.out

时间:2013-05-17 14:43:31

标签: android c file execute

我在Android(ARM)上编译,组装和链接了一个文件,并希望在Android(ARM)上执行它 我的/data/data/Package.AppName/files文件夹中有一个a.out文件 该文件存在,如果我尝试通过文件获取有关它的信息,我得到输出:

a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped  

所以我确定该目录中存在该文件 如果我从Java IsReadable访问此文件为true,则IsWriteable为true且IsExecutable为true。
我尝试使用以下命令执行它:

/data/data/Package.AppName/files/a.out  

但这让我跟随strace:

9001  execve("/data/data/Package.AppName/files/a.out", ["/data/data/Package.AppName/files/a.out"], [/* 16 vars */]) = -1 ENOENT (No such file or directory)  
9001  dup(2)                            = 3  
9001  fcntl64(3, F_GETFL)               = 0x1 (flags O_WRONLY)  
9001  close(3)                          = 0  
9001  write(2, "strace: exec: No such file or directory\n", 40) = 40  
9001  exit_group(1)                     = ?

编辑1:
我正在检查文件是否存在以及在执行之前它具有哪些权限:

ls -l strace -f data/data/.../files/a.out  

这给了我-rwx ------ u0_a63 u0_a63 4583 2013-05-17 17:07 a.out
所以这个文件存在。我只是通过调用它来执行:

String[] command = {"strace", "-f", "data/data/.../files/a.out"};
Runtime.getRuntime().exec(command);

编辑2: 我用过:

f.setReadable(true, false);  
f.setWritable(true, false);
f.setExecutable(true, false)

现在它有权限-rwxrwxrwx,但仍然是同样的问题 我使用android-gcc-4.4.0工具链逐步编译它(编译,汇编,链接):http://code.google.com/p/native-android-development/downloads/detail?name=android-gcc-4.4.0.tar.gz&can=2&q=

知道为什么这会给我的ENOENT吗? 任何帮助赞赏。

先谢谢。

0 个答案:

没有答案