2012-09-20 54 views
3

我有一个使用标准main()函数编写的程序。是否有可能在Android上运行C程序

是否可以在Android上运行此程序,例如从我的应用程序或许多shell应用程序之一启动它?如果是这样,我需要采取哪些步骤来实现这一目标?我可以用NDK编译应用程序吗?

我知道关于如何将C函数链接到Android代码有一些已解答的问题,主要是指向NDK教程,但至少对我而言,这些教程都不是明确的。看来NDK是关于使用C函数的,而不是运行完全C编译的程序。它是否正确?

回答

5

所有你需要做的就是使用交叉编译器(如何得到它取决于你的linux发行版)为正确的架构(通常是ARM)编译它。然后,你可以从你的(基于Java的)像任何其他excecutable执行:

Process process = Runtime.getRuntime().exec(commandLine); 

有关“执行”部分的详细信息,请参阅Any way to run shell commands on android programmatically?

+0

会试用它,并回来的见解。谢谢:) – Dekel

0

NDK包含从C源创建可执行文件所需的所有工具,可用于Linux,Mac和Windows下载。你应该使用的魔法魅力是包括$(BUILD_EXECUTABLE)

+0

挖掘了网络,了解如何使用ndk-toolchain编译一个简单的c文件。到目前为止,我已经到了需要在linux shell下执行命令arm-linux-androideabi-gcc来编译我的代码的地步。到目前为止,我没有成功使用它,因为我得到编译错误:“defs.h:没有这样的文件或目录” – Dekel

+0

它比这更容易。请参阅http://www.androidenea.com/2009/04/closer-look-at-android-project-build_27.html及其中的参考资料。 –

+0

只考虑到文章很古老。 NDK的新版本允许甚至鼓励以下构建技巧:转到您的项目目录并运行** ndk-build **。生成的可执行文件或共享库将被放置到**。/ libs **目录中。 –

相关问题