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

标签 android shell android-ndk g++

我想运行用 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/

相关文章:

android - 我可以使用 android NDK 修改之前创建的 .so 文件吗?

android - 由于 'X-Frame-Options' 设置为 'SAMEORIGIN',因此链接在 WebView 中不起作用

android - 使用 gson 反序列化包含单个列表的对象

linux - 显示目录存在的位置

java向shell脚本返回特定值

Java JNI 与 Android NDK

android - 使用 NDK 构建 Android openssl 无法正确生成 arm4 程序集文件

android - 如何在webview android中启用缓存

android - 重现生产中发生的错误 (Android)

linux - shell命令删除文本文件中的行,其中包含特定文本