Android编译系统中的Kconfig,Makefile,.config编译系统浅析
来源:互联网 发布:linux java配置 编辑:程序博客网 时间:2024/06/06 10:55
在对Android进行编译时,用的就是Linux下的Makefile和Kconfig编译系统,对整个系统进行编译。当然还包括很多配置命令,比如make defconfig, make oldconfig以及各种编译的脚本,共同构成Android的整个编译系统!
跟make menuconfig这个命令相关的文件,包括三类,包括.config,Kconfig,Makefile。为什么不说三个,而说三类呢?因为 Kconfig和Makefile是配合使用的,在很多的子目录都存在,而.config只存在于根目录中。这三个文件的作用分别是:
Kconfig:定义了配置项
**defconfig:对配置项进行赋值
Makefile:建立配置项的生成法则
看到这里,可能有人就头疼了,到底什么是配置项,什么是生成法则。这里要求具有理解Makefile的能力,如果不懂的话,可以去找Makefile的相关资料。
如果使用举例的话,比较容易理解。比如,我编写了一个新设备的驱动文件sprd_sim.c,这里不关心sprd_sim.c的内容。如果想把sprd_sim.c编译到Android系统中,需要按照以下的步骤来完成。
1) 将sprd_sim.c放到Android系统驱动中的一个相关目录中,这个目录只要求已存在Kconfig和Makefile中,比如源码kernel目录/kernel/driver/目录中。
2) 在这个目录的Kconfig中添加
menu "SPRD_SIM support"config SPRD_SIMbool "Support for SPRD_SIM"help Say Y here to add support for leadexd SPRD_SIMif SPRD_SIMconfig SPRD_SIM_LEADEXCEEDtristate "LEADEXD Sprd SIM Driver"depends on HAS_IOMEMhelp Leadexceed sprd SIM Driver implemented by Jobs-Hu.endifendmenu
3) 在Makefile中添加
## Makefile for the sim detect device drivers.## 16 May 2014, hu<Jobs.Hu@leadexd.com>## Object files in subdirectoriesobj-$(CONFIG_SPRD_SIM_LEADEXD) += sprd_sim.oobj-y
4) 在.config中可以添加
CONFIG_SPRD_SIM=yCONFIG_SPRD_SIM_LEADEXD=y
或者在执行make menuconfig时,找到显示名为MY_DRIVER的选项,使用空格选中。但是这个一般不需要我们自己去执行,一般执行相关的编译脚本后,这些配置信息便会
自动解析到相关的config文件里
5)在board.c中加入该设备
static struct platform_device *devices[] __initdata = {#ifdef CONFIG_ION&sprd_ion_dev,#endif&sprd_emmc_device,&sprd_sdio0_device, &sprd_sim_device, ....
总而言之,就是如果需要向系统内核中添加一个功能,那么首先定义一个配置项对应于这个功能,添加到特定的Kconfig文件中。然后在Makefile 里,定义这个配置项需要编译哪些文件。最后就可以通过make menuconfig或者直接修改.config来使能这个配置项。
其实,.config就是将执行make menuconfig后,对配置项的修改保存到一个文件中而已。当然,各个公司会按照自己的工作需要,加入一些编译脚本,执行新的编译指令,也会生成.config文件,如果没有.config时,make menuconfig会按照默认值来显示。
参考文档:http://blog.chinaunix.net/uid-24227137-id-3277449.html
http://shunfengwei.blog.163.com/blog/static/17522511720123494332301/
http://blog.csdn.net/estate66/article/details/5886816
http://blog.csdn.net/dianhuiren/article/details/6917132
- Android编译系统中的Kconfig,Makefile,.config编译系统浅析
- Android编译系统中的Kconfig,Makefile,.config编译系统浅析
- Android编译系统中的Kconfig,Makefile,.config编译系统浅析
- linu编译系统的Kconfig和Makefile
- linu编译系统的Kconfig和Makefile
- linu编译系统的Kconfig和Makefile
- linu编译系统的Kconfig和Makefile
- linux编译系统的Kconfig和Makefile
- android编译系统 makefile
- 关于Kernel编译配置文件 - makefile .config Kconfig
- android编译系统的makefile
- Android系统编译之Makefile
- Kconfig Makefile 内核编译
- Kconfig、Makefile、.config 与编译内核模块添加 -- linux内核
- android编译系统makefile(Android.mk)写法
- android编译系统makefile(Android.mk)写法
- android编译系统makefile(Android.mk)写法
- android编译系统makefile(Android.mk)写法
- 使用rm将文件移到回收站
- Android 开机启动APP,不显示默认的桌面
- C++语言之指针与指针、指针与普通变量的关系
- MYSQL创建用户和授权
- OC学习笔记-基础篇
- Android编译系统中的Kconfig,Makefile,.config编译系统浅析
- PAT1020. 月饼
- OCP 1Z0 051 103
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- LeetCode Remove Duplicates from Sorted Array
- apache的斜杠问题
- 老人与海的故事。
- GitHub删除一个repository
- j2ee编程经验教训(一)