【发布时间】:2012-09-19 14:40:07
【问题描述】:
我正在寻找在 Android 4.1 (Jelly Bean) 上运行本机 ARM 可执行文件的方法。比如编译经典的C程序
// hello.c
#include <stdio.h>
int main() {
printf("Hello world");
}
到 ARMv7a 可执行文件,使用 Android NDK 说 hello,然后在 Android shell 中运行它。我尝试了网络上建议的方法,例如将可执行文件推送到/data/local by
adb push hello /data/local
更改权限以允许其执行
adb shell chmod 755 /data/local/hello
然后在 shell 中使用
调用它们adb shell /data/local/hello
最后一步失败并出现错误:
/data/local/hello: not found
但显然文件在那里。我怀疑问题在于 Jelly Bean 的外壳不再允许执行 alien 二进制文件。谁能证实这一点并给我一个解决方案?
【问题讨论】:
-
这不是我所看到的 Android 编程问题。我相信这会引起 Android 核心用户的兴趣。
-
@Chahk 谢谢。然而,我不认为它回答了我原来的问题。最终,我想通过交叉编译或使用 ARM 预构建版本来运行像“dd”这样的程序。现在我回想起“busybox”和“kbox”,它们也在系统上安装了新的二进制文件,所以我相信这里没有安全问题。我会检查这些工作,看看他们是如何做到的。
-
@Chahk - 鉴于堆栈溢出问题是从 2011 年 10 月开始的,因此是针对未指定的旧版本 Android 的,Jelly Bean 的答案可能会有所不同。发问者真的只是想让某人确认是否是,这是一个关于 Android 的实用可回答问题。
-
@MarkBooth 很公平。为了记录,我没有投票结束。很想知道这个问题的答案。
-
你能用它们的路径调用二进制文件吗?例如,
/system/bin/ls是否有效?
标签: security android-ndk adb