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 を持っていますが、それでも同じ問題があります。http://code.google.com/p/native-android-development/downloads/detail?name=android
の android-gcc-4.4.0 ツールチェーンを使用して、段階的にコンパイル (コンパイル、アセンブル、リンク) しました。-gcc-4.4.0.tar.gz&can=2&q=

これが私の ENOENT を与える理由は何ですか?
どんな助けでも感謝します。

前もって感謝します。

4

0 に答える 0