如何在Android系统上运行C语言的程序

Python011

如何在Android系统上运行C语言的程序,第1张

在Android系统上运行C语言程序的方法:

1. 查看可执行文件xlisten-arm所需要的动态链接库:

执行语句:

2. 将程序编译的时候选择静态编译,即使用选项 -static

对Makefile文件中的CFLAG变量进行修改:

CFLAGS  =  -Wall

改为:

CFLAGS  =  -Wall -static

3. 在Makefile中,修改LIBS变量:

LIBS    = -lsqlite3 -lm -lcrypt

改为:

LIBS    = -lsqlite3 -lm -lcrypt -lpthread -ldl

然后进行交叉编译,成功了!

4. 编译出来的可执行文件比较大,因为事静态编译的,有2M多,

拷贝到开发板的andriod系统中,

修改权限:

#chmod 777 xlisten-arm

5. 执行:

/ # ./xlisten-arm

这样就能够正确的执行了!

Android系统简介:

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。

安卓也可以用C语言编写,这种方式程序效率高,但需要一些底层知识。。。(即所谓NDK),Android在支持NDK后是可以实现用C和C++来编写的。因为用C++比较多,之前用cocos2d-x写过Demo游戏。就使用了NDK编译出.so文件然后放入Android工程用在Java层调用。Android SDK的Java层是可以通过JNI和C/C++进行数据交互的。

详见:

Android NDK | Android Developers

The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can be helpful so you can reuse existing code libraries written in these languages, but most apps do not need the Android NDK.

害哥搞这个离线包搞了个把小时。为了清楚,上个图: 敲个LS,什么东西都没有,这个目录是cygwin的安装目录下面的home文件夹下的用户名文件夹。接下来是配置与Android相关的。在home/用户名,这个文件夹下有一个文件为.bash_profile,打开它,到最后添加两行NDK的环境变量:NDK_ROOT=/cygdrive/d/android-ndk-r6export NDK_ROOT上面的意思是,ndk的目录是,d:/android-ndk-r6添加完之后,关闭Cygwin重新启动一下,然后敲入cd $NDK_ROOT,是否进入到ndk的目录了?否则就看看哪个字母错了。在ndk的目录下samples下有很多例子,随便弄个就可编译了。下面是新建一个项目,以对C语言在项目中的位置更清楚。打开Eclipse新建一个Android项目,取名hellojni,为了清晰,便于维护,及各种各样的好处,JNI的JAVA代码单独一个类,单独一个包。其实最好能不用JNI就别用JNI,这东西负作用巨大,特别是在用到JNI复杂的地方,什么内存啊,类型啊,哪里调用的方法,异常啊,可靠性都非常麻烦。非要用JNI的复杂功能,做好两件事,做之前充分设计,设计之前充分学习一下JNI文档。当然对于一些简单的应用,那只需要充分仔细。作好参数,返回值的检查,记得释放内存就行了。