android编译系统 makefile

来源:互联网 发布:安卓优化软件 知乎 编辑:程序博客网 时间:2024/05/01 03:20

android最顶层的目录结构如下:

|-- Makefile        (全局的Makefile) 
|-- bionic          (Bionic含义为仿生,这里面是一些基础的库的源代码) 
|-- bootloader      (引导加载器) 
|-- build           (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具) 
|-- dalvik          (JAVA虚拟机) 
|-- development     (程序开发所需要的模板和工具) 
|-- external        (目标机器使用的一些库) 
|-- frameworks      (应用程序的框架层) 
|-- hardware        (与硬件相关的库) 
|-- kernel          (Linux2.6的源代码) 
|-- packages        (Android的各种应用程序) 
|-- prebuilt        (Android在各种平台下编译的预置脚本) 
|-- recovery        (与目标的恢复功能相关) 
`-- system          (Android的底层的一些库)

本文将要分析的是build目录下的makefile和shell文件,

/build/core/definitions.mk

定义了一些函数控制编译范围:

all-makefiles-under

first-makefiles-under

all-subdir-makefiles

all-named-subdir-makefiles

/bulid/target/product/generic.mk 把工程编译到系统中

PRODUCT_PACKAGES +=

=====================================

make的内嵌函数:提供了处理文件名、变量、文本和命令的方法

比如:addprefix, addsuffix

详见:http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/make-08.html

=====================================

编译在Android环境下运行的可执行文件:

在源文件目录下创建android.mk,内容如下:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := helloaLOCAL_SRC_FILES := hello-a.cinclude $(BUILD_EXECUTABLE) //指定我们现在要生成一个可执行的文件

在Makefile文件中打印Log:

$(warning xxxxx) //或者$(error xxxxx) //输出变量方式为:$(warning  $(XXX))


原创粉丝点击