我在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吗? 任何帮助赞赏。
先谢谢。