我想运行用 C++ 编写并使用 Android 工具链 9
编译的 hello world
,但我遇到了问题:默认情况下我没有启动它的权限,我无法使用 chmod` 更改权限。
我使用了 Android 2.3.3 - Api Level 10
应用程序由 API 级别 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 中运行应用程序吗?
非常感谢。
附言对不起我的英语=)
最佳答案
默认情况下,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 权限并且可以重启。
关于android - 如何在 Android SHELL 中运行 C++ 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133274/