android编译系统(一):GUN Make简介

对于大型项目,源文件通常非常多,不可能逐个编译。make工具是一款自动编译工具,可以用于大型项目编译。

make具有高度灵活性:如果项目仅仅修改某几个源文件,则只需重新编译这几个源文件;如果某个头文件被修改了;则需重新编译所有引用该头文件的源文件。

-------------------------------------------------------------------------------------

makefile 文件是编译信息描述文件。

Make是一个解释Makefile文件的命令工具。

android编译系统是基于GUN Makefile的,但是某些高级特性有所拓展。

-------------------------------------------------------------------------------------

Makefile是Rule的集合,Rule的格式是:

target ... : prerequisites ...

command1

command2

...

只要有任何一个prerequisites(条件)有变更target(目标)就会被更新。目标被更新意味着command(命令)列表将被全部执行一遍。

command(命令)列表必须以制表符(Tab)打头,绝不可用空格替代。(Mackfile中会对每个Tab打头的命令创建一个Shell进程去执行)

-------------------------------------------------------------------------------------

Android编译系统的入口文件是位于$ANDROID_HOME根目录下的Makefile文件,此文件中只有一行命令:

include build/core/main.mk

这里的build目录才是整个Android编译系统描述集的真正所在。其他每个目录下的Makefile文件都引用此目录下众多文件定义的变量和函数。

-------------------------------------------------------------------------------------

Android编译系统中,GUN Makefile文件名是Android.mk

Makefile文件一般包含以下元素:

1、名称,即编译后生成的目标文件文件名,格式是:LOCAL_MODULE :=

2、清除局部变量:include $(CLEAR_VARS)

3、引入依赖文件:LOCAL_SRC_FILES := main.c

4、标签:LOCAL_MODULE_TAGS := eng development

5、动态链接库(共享库):LOCAL_SHARED_LIBRARIES := cutils

6、模版文件:include $(BUILD_EXECUTABLE)




你可能感兴趣的:(Android底层,android,makefile)