如何在Android SHELL中运行C++应用程序

Ale*_*Wih 10 shell android g++ android-ndk

我想运行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
Run Code Online (Sandbox Code Playgroud)

然后去SHELL尝试运行a.out:

>adb shell
> 
>/mnt/sdcard/a.out
Run Code Online (Sandbox Code Playgroud)

结果是:

>`/mnt/sdcard/a.out: permission denied`
Run Code Online (Sandbox Code Playgroud)

命令ls -l显示以下权限a.out:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`
Run Code Online (Sandbox Code Playgroud)

我试图更改权限:

>chmod 777 /mnt/sdcard/a.out
Run Code Online (Sandbox Code Playgroud)

但权利不会改变:

>`----rwxr-x system   sdcard_rw   863656 2012-04-12 22:42 a.out`
Run Code Online (Sandbox Code Playgroud)

我想我已经使用android留下了一些重要的东西.

有人可以帮助我,并给我一个如何在`Android SHELL中运行应用程序的方法?

非常感谢.

对不起我的英文=)

Sam*_*een 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
Run Code Online (Sandbox Code Playgroud)

并不需要root访问权限生存 重启.