Android编译系统中的Kconfig,Makefile,.config编译系统浅析
?在對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中添加
[html]?view plaincopy
3)?????? 在Makefile中添加
[html]?view plaincopy
? ?
4)?????? 在.config中可以添加?
[html]?view plaincopy
或者在執行make menuconfig時,找到顯示名為MY_DRIVER的選項,使用空格選中。但是這個一般不需要我們自己去執行,一般執行相關的編譯腳本后,這些配置信息便會
自動解析到相關的config文件里
5)在board.c中加入該設備
[html]?view plaincopy
???????? 總而言之,就是如果需要向系統內核中添加一個功能,那么首先定義一個配置項對應于這個功能,添加到特定的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文件
- 下一篇: Android JNI 使用的数据结构J