文档章节

Android系统build/core下.mk文件分析

blackylin
 blackylin
发布于 2012/07/13 09:10
字数 559
阅读 716
收藏 2

http://blog.csdn.net/tangy110/article/details/6288798

Android编译系统的架构:

         分析Android编译系统,你会发现,Android编译系统完成的并不仅仅是对目标(主机)系统二进制文件、java应用程序的编译、链接、打包等,而且还有包括生成各种依赖关系、确保某个模块的修改引起相依赖的文件的重新编译链接,甚至还包括目标文件系统的生成,配置文件的生成等,因此Android编译系统具有支持多架构(linux-x86windowsarm等)、多语言(汇编、CC++Java等)、多目标、多编译方式。这些目标和结构决定其架构也很重要。

         Android编译系统集中于build/core下,几个很重要的*.mk文件如下:

         main.mk(主控Makefile)

         base_rules.mk(对一些Makefile的变量规则化)

         config.mk(关于编译参数、编译命令的一些配置)

         definations.mk(定义了很多编译系统中用到的宏,相当于函数库)

         Makefile(这个Makefile特指build/core下的Makefile,此文件主要控制生成system.img,ramdisk.img,userdata.img,以及recorvery imagesdk等)

         Binary.mk(控制如何生成目标文件)

         Clear_vars.mk(清除编译系统中用到的临时变量)

         Combo/linux-arm.mk(控制如何生成linux-arm二进制文件,包括ARM相关的编译器,编译参数等的设置)

         Copy_headers.mk(将头文件拷贝到指定目录)

         分散于各个目录下的Android.mk(控制生成局部模块的源码,名称所需头文件路径,依赖库等特殊选项)

         Build/envsetup.mk(编译环境初始化,定义一些实用的shell函数,方便编译使用)

         以上几个主要的文件,可以按照社会分工打一个比方:

         Main.mk是总统,是老大,承担了很多工作。

         Makefile是副总统,辅佐老大Main.mk

         Base_rules.mk是交警,让不规则的东西,变得规则。

         Config.mk是省长,规定了各个人民群众该如何行事

         Definations.mk是图书馆管理员

         Binary.mk应该属于村长了,规定每个人该如何行事

         Clear_vars.mk应该属于保洁公司的工人吧

         Combo/linux-arm.mk应该属于社会公民了,他决定自己该如何去做

本文转载自:http://blog.csdn.net/tangy110/article/details/6288798

共有 人打赏支持
blackylin
粉丝 48
博文 47
码字总数 27860
作品 0
深圳
Android工程师
私信 提问
Android Building System 总结

Android以模块的形式来组织各个系统中的部件,Eng专业点的词汇就是Module,就是各位在几乎每个目录下都 能看到的Android.mk。可以简单地把Android所有的Make文件分为4种: 1、For config 这类...

Koon.LY
2012/06/03
0
0
android makefile 编译分析及 android.mk分析

下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么。(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本号,设置环境变量(BUILDSYSTEM)和缺省的目标...

垂盆草
2012/09/08
0
0
Android—JNI调用简单实例解析

转自:http://www.cnblogs.com/sevenyuan/p/4202759.html 感谢原作者的细心整理! 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class ......

80后小子
2015/11/12
0
0
解决JNI在Windows环境下因长路径导致编译失败问题

之前听一个朋友反馈LuaScriptoCore在Windows下编译会报错,今天特意跑到Windows环境下测试了一番,果然是存在问题。得到了下面的编译报错信息: Build command failed. Error while executin...

杰嗒嗒的阿杰
05/04
0
0
[开源c-FFMpeg]Android add prebuilt lib(*.so) to Android.mk

最近移植ffmpeg到android做转码工具,编译出的了libffmpeg.so,调用该库遇到了点小问题,参考下面的文章解决: *** 如果你的代码不想随Android开源发布,或者你的代码用到了闭源的第三方库文...

lilin9105
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
23分钟前
2
0
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部