10

我想hello world在 C++ 上运行并用 编译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 留下了一些重要的东西。

任何人都可以帮助我并给我一种如何在“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

如果您已将手机植根,则可以执行 amount -o remount,rw /mnt/sdcard并且它应该可以运行。

我已经在我的安卓上试过了。

于 2012-08-06T12:59:00.447 回答