您的位置:首页 > 运维架构 > Linux

Linux 内核中Kconfig和Makefile文件解释

2010-12-23 01:34 99 查看
Linux内核源码中广泛分布着两种文件:Kconfig和Makefile,那么这两种文件的作用具体是什么呢?

Makefile文件:

先说Makefile吧,Linux内核中Makefile主要分为以下几类:

1)Linux/Makefile(http://lxr.linux.no/linux+v2.6.36/Makefile):控制Linxu内核源码整体的编译选项,包括汇编器、c语言编译器的选择、引用.config文件等。

2).config文件:在编译Linxu内核时,运行完make menuconfig命令后,会产生一个.config文件,里面包含了用户选择的模块编译开关。

3)Linux/arch目录下的Makefile:包含与体系结构相关的选项。

4)Linux/script目录下的Makefile:一些Makefile通用的规则。

5)Kbulid Makefile:这种Makefile文件是Linux内核源码中最常见的一种Makefile文件,它的语法为:

obj-y或obj-m或obj-x += 目标文件.o

目标文件-objs := 目标文件1.o 目标文件2.o 目标文件3.o

这样就把三个目标文件1.o、目标文件2.o、目标文件3.o编译生成了一个目标文件.o。

(obj-y是编译进内核的,obj-m是被编译成模块、obj-x是不被编译进内核)

Kconfig文件:

当你使用make menuconfig编译内核的时候,会产生很多编译选项让用户选择,那么这些编译选项是怎么产生的呢?

make menuconfig命令使用Kconfig文件生成.config文件,然后.config文件会被Makefile引用,Kconfig文件的语法是:

例如:

menuconfig USB_SUPPORT
bool "USB support"
depends on HAS_IOMEM
default y

---help---
This option adds core support for Universal Serial Bus (USB).
You will also need drivers from the following menu to make use of it

endmenu

USB_SUPPORT是菜单选项,bool是菜单选项的类型,一般有bool、tristate等,bool表示[],只能选择编译进内核或不编译进内核、

tristate表示<>,可以选择编译成模块。

(通过查看Kconfig文件我们就可以选择自己感兴趣的内核源码去阅读,这样可以事倍功半)。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: