Mathew Yuanweiyuanwie.blog.chinaunix.net
yuzaipiaofei
全部博文(133)
触摸屏驱动(0)
蓝牙驱动(1)
按键驱动(1)
init脚本(1)
bootloader 移植(2)
android内核研究(5)
移植要点总结(2)
android应用开发(0)
Camera移植(0)
WIFI驱动(1)
LCD驱动(7)
DNS相关(1)
ARM外设(3)
shell学习(2)
Linux文件系统(4)
linux内核编程(4)
驱动模块(2)
Linux驱动模型(9)
2012年(6)
2011年(112)
2010年(16)
athxy
609854
stevenki
34516197
Renwen05
小雅贝贝
zou_1234
上下求索
milkway4
Bsolar
格伯纳
浪花小雨
415619
dzysnmm
mr_xiaog
g_26
jonas_ma
whpu0006
分类: LINUX
2011-06-09 22:23:03
在Android中增加本地程序或者库,这些程序和库与其所载路径没有任何关系,只和它们的Android.mk文件有关系。Android.mk和普通的Makefile有所不同,它具有统一的写法,主要包含一些系统公共的宏。 在一个Android.mk中可以生成多个可执行程序、动态库和静态库。1,编译应用程序的模板: #Test Exe LOCAL_PATH := $(call my-dir) #include $(CLEAR_VARS) LOCAL_SRC_FILES:= main.c LOCAL_MODULE:= test_exe #LOCAL_C_INCLUDES := #LOCAL_STATIC_LIBRARIES := #LOCAL_SHARED_LIBRARIES := include $(BUILD_EXECUTABLE)(菜鸟级别解释::=是赋值的意思,$是引用某变量的值)LOCAL_SRC_FILES中加入源文件路径,LOCAL_C_INCLUDES 中加入所需要包含的头文件路径,LOCAL_STATIC_LIBRARIES加入所需要链接的静态库(*.a)的名称,LOCAL_SHARED_LIBRARIES中加入所需要链接的动态库(*.so)的名称,LOCAL_MODULE表示模块最终的名称,BUILD_EXECUTABLE表示以一个可执行程序的方式进行编译。2,编译静态库的模板: #Test Static Lib LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ helloworld.c LOCAL_MODULE:= libtest_static #LOCAL_C_INCLUDES := #LOCAL_STATIC_LIBRARIES := #LOCAL_SHARED_LIBRARIES := include $(BUILD_STATIC_LIBRARY)一般的和上面相似,BUILD_STATIC_LIBRARY表示编译一个静态库。3,编译动态库的模板: #Test Shared Lib LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ helloworld.c LOCAL_MODULE:= libtest_shared TARGET_PRELINK_MODULES := false #LOCAL_C_INCLUDES := #LOCAL_STATIC_LIBRARIES := #LOCAL_SHARED_LIBRARIES := include $(BUILD_SHARED_LIBRARY)一般的和上面相似,BUILD_SHARED_LIBRARY表示编译一个静态库。 以上三者的生成结果分别在如下,generic依具体target会变:out/target/product/generic/obj/EXECUTABLEout/target/product/generic/obj/STATIC_LIBRARYout/target/product/generic/obj/SHARED_LIBRARY 每个模块的目标文件夹分别为:可执行程序:XXX_intermediates静态库: XXX_static_intermediates动态库: XXX_shared_intermediates 另外,在Android.mk文件中,还可以指定最后的目标安装路径,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH来指定。不同的文件系统路径用以下的宏进行选择:TARGET_ROOT_OUT:表示根文件系统。TARGET_OUT:表示system文件系统。TARGET_OUT_DATA:表示data文件系统。用法如:CAL_MODULE_PATH:=$(TARGET_ROOT_OUT)
http://blog.csdn.net/zhandoushi1982/archive/2010/02/22/5316669.aspx
上一篇:获取Android 源代码
下一篇:为Milestone/Droid动态编译busybox并链接至bionic
登录 注册