您的位置:首页 > 移动开发 > Android开发

android编译系统 makefile

2011-09-30 18:06 204 查看
android最顶层的目录结构如下:

.

|-- Makefile (全局的Makefile)

|-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码)

|-- bootloader (引导加载器)

|-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)

|-- dalvik (J***A虚拟机)

|-- 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    := helloa

LOCAL_SRC_FILES := hello-a.c

include $(BUILD_EXECUTABLE) //指定我们现在要生成一个可执行的文件

在Makefile文件中打印Log:

$(warning xxxxx) //或者
$(error xxxxx) //输出变量方式为:
$(warning  $(XXX))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: