刚开始还不知道android上能直接对c,c++文件直接编译成可执行程序。
当然原本就可以的,不然怎能跑linux内核呢。
直接编译c源程序有两种办法:
第一种:交叉编译。android是嵌入式系统。嵌入式移植的办法就是交叉编译了。
下载交叉编译工具,arm-none-linux-gnueabi-gcc
编写c语言源程序,helloworld.c
然后执行:arm-none-linux-gnueabi-gcc -static -o helloworld helloworld.c
生成可执行文件helloworld,adb push到android上,执行就可以了。
如果没有加上-static选项,会出现错误,错误是因为程序默认库路径没有需要的库。linux上和android的库还是不大一样的。加上-static就是在编译的时候把所需要的库文件都包含进程序里面。所以ls -l看一下会发现程序会大好几倍。
第二种:利用android自己的libc库。
主要是编写android的makefile:android.mk
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS:=optional
LOCAL_SRC_FILES:=\
helloworld.c
LOCAL_MODULE:=helloworld
include $(BUILD_EXECUTABLE)
然后mm,最后把输出目录下的helloworld push到android机子上就OK了。
经测试,写个简单的socket,在android和在linux上暂时编译还没出现什么不同的地方。
看到android能像linux那样写代码,自己也挺高兴的,毕竟自己喜欢c,喜欢底层的东西。