【发布时间】:2015-09-16 23:41:15
【问题描述】:
我知道这可能被问过很多次了;但我找不到正确的答案。总之,
在我的 Android 手机上,我已经安装了 CCTools。我可以编译 C/C++ 程序并使用 CCTools 菜单项运行它们。但是,当我尝试从终端运行程序时,我得到“权限被拒绝”。我使用 Linux 风格的 './a.out' 来运行。
【问题讨论】:
标签: android c++ command-line terminal
我知道这可能被问过很多次了;但我找不到正确的答案。总之,
在我的 Android 手机上,我已经安装了 CCTools。我可以编译 C/C++ 程序并使用 CCTools 菜单项运行它们。但是,当我尝试从终端运行程序时,我得到“权限被拒绝”。我使用 Linux 风格的 './a.out' 来运行。
【问题讨论】:
标签: android c++ command-line terminal
tl.dr.:Android 不是开发命令行应用程序的好平台。
出于安全原因,Android 不支持从用户存储执行文件。这是由noexec 挂载标志完成的。这无法更改,因为底层文件系统不支持可执行文件。 (至少在我的带有 Lollipop 的 Nexus 5 上。你可以尝试(如果你有 root)mount -o remount,exec /storage/[your sdcard path]。路径可以在mount 的输出中找到)
作为一个hack,如果你有root,你可以将文件复制到/mnt/obb/。这是一个临时文件系统。在那里你必须做chmod 0755 /mnt/obb/[filename] 将文件标记为可执行文件。然后就可以执行了。
【讨论】:
LauncherConsoleActivity.java 中的实现