0

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

提前致谢。

4

0 回答 0