10

hello worldC++ で記述して でコンパイルして実行したいのですAndroid toolchain 9が、問題に直面しました。デフォルトでは、起動する権限がなく、chmod` を使用して権限を変更できません。

使ったAndroid 2.3.3 - Api Level 10

アプリケーションはクロスコンパイラによってコンパイルされましたAPI level 9

手順:

アプリケーションをコンパイルします。

~/toolchain_andr9/bin/ arm-linux-androideabi-g++ helloworld.cpp

次に、エミュレーターの SDCARD にアプリケーションを送信します。

>adb push a.out /mnt/sdcard

次にSHELLに移動して実行してみてくださいa.out

>adb shell
> 
>/mnt/sdcard/a.out

結果は次のとおりです。

>`/mnt/sdcard/a.out: permission denied`

コマンドls -lは次の権限を表示しa.outます:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`

権限を変更しようとしました:

>chmod 777 /mnt/sdcard/a.out

しかし、権利は変わりません:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`

私はアンドロイドを使って何か重要なものを残したと思います。

誰かが私を助けて、「Android SHELL」でアプリケーションを実行する方法を教えてくれませんか?

どうもありがとう。

PS私の英語でごめんなさい=)

4

2 に答える 2

13

デフォルトでは、SD カードは オプションnoexecでマウントされます。これにより、カード上のファイルの実行は、権限に関係なく ( であっても-rwxrwxrwx) 禁止されるため、ファイルを別の場所に移動してから実行する必要があります。

最も簡単な方法は、ファイルを移動/data/local/tmp/し、フル パス (通常の POSIX PATH セマンティクス) を使用して実行することです。

> adb push a.out /data/local/tmp/a.out
> adb shell
> chmod 755 /data/local/tmp/a.out
> /data/local/tmp/a.out

これはroot アクセスを必要とせず、再起動後も存続します。

于 2012-04-24T11:48:24.927 に答える
4

あなたがあなたの電話を根絶したならば、あなたはすることができてmount -o remount,rw /mnt/sdcard、それは動くべきです。

私は自分のAndroidでそれを試しました。

于 2012-08-06T12:59:00.447 に答える