在Android手机上编译C代码

Nat*_*urt 5 android gcc compilation toolchain android-ndk

我想编译并运行发送到我的AndroidApp的.c文件.我想在ARM的ARM .c文件上编译.我正在使用Android 4.2的Galaxy Nexus.我已经使用终端IDE安装了Android SDK和Android NDK,但是我不想从终端手动编译它.现在我已经下载了Android的GCC(android-gcc-4.4.0),并且不知道如何正确地将它添加到我的应用程序以及如何从Java代码中使用它进行编译.

我在互联网上已经阅读了很多关于此的内容,但是没有一个真正帮助我弄清楚,如何做到这一点

所以我的问题是:我如何使用Android应用程序中的Android/NDK工具链或任何其他工具链来编译然后运行.c文件.

编辑: 我现在把android-gcc解压缩到我的手机上的文件目录(data/data /.../ files).我想在手机上调用gcc编译器来编译.c文件.我试着用:

String[] cmds={MainActivity.this.getFilesDir() + "/android-gcc-4.4.0/bin/arm-eabi-gcc-4.4.0", "-c", file_path};
String result = "";
Process p = Runtime.getRuntime().exec(cmds);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null) 
{
    result += line + "\n";
}
alert_dialog("Output", result); // Creates and displays an alert dialog
in.close();
}
catch (Exception e) 
{
    alert_dialog("Error", e.toString() + "\n" + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)

这是我在Android上调用gcc的方法,但我只得到以下异常:java.io.IOException:运行exec()时出错.命令[...]工作目录:null环境null.

有没有人知道如何在电话上调用android-gcc编译器?

任何帮助表示赞赏和感谢

Sev*_*yev -2

这不是官方支持的场景;任何操作系统都不会允许非特权应用程序随意在设备上安装可执行代码。

在有root权限的手机上,你可能会有一些运气;但是,您仍然需要从头开始构建一个工具链。NDK 从来就不是为此而设计的。NDK 没有在 ARM 上运行的风格。

  • 多么“侮辱性”的废话。**只有**一个称职的操作系统才能让该死的设备的“所有者”决定他想在那里运行什么。只有锁定玩具操作系统的设备对于用户来说甚至不再是计算机,并且像对待智障人士一样对待用户,才会提出一个疯狂和极权主义的概念,就像不允许所有者访问他的“自己的”设备一样。 (3认同)
  • 我并不是不同意你的观点,但是这个是如何运作的呢?https://play.google.com/store/apps/details?id=com.n0n3m4.droidc&hl=en (2认同)