Linux的代码配置项由Kconfig来完成的,关于Kconfig语法,可参见:linux/Documentation/kbuild/kconfig-language.txt
在编译时,先进行配置,目的是根据需求选择功能以及编译生成方式类型(模式或包含在内核中).
配置项操作可以由如下命令中的其中一条来完成:
make config, make menuconfig, make oldconfig, make xx_defconfig
说明一下各config命令都做了什么事情:
make config: 这个要求你手动选择所有配置项,配置完成后生成.config文件.
make menuconfig: 显示以curses的图形配置菜单,当已有.config文件存在时,它会根据.config文件设定默认项.若不存在.config文件,则根据各级Kconfig文件来设定菜单项.完成配置后,生成.config文件.
make oldconfig: 与make menuconfig相同,区别在于这个没有图形界面,当已有.config文件存在时,它根据.config文件设定默认项,若kconfig有新配置项时,会提示你进行选择;若不存在.config文件,则根据各级Kconfig文件来设定菜单项.完成配置后,生成.config文件.
若已存在.config文件, make menuconfig及make oldconfig都会把原.config另存为.config.old.
make xx_defconfig: 一般源码中都有不同硬件平台的默认配置文件,你也可以制做自己的默认配置文件,当这个命令执行时,它会根据kconfig及xx_defconfig来生成.config文件.
在执行完其中一条config命令后,会生成.config及autoconf文件,autoconf是根据配置项生成的相应宏定义,供makefile使用,当执行make命令时,就会根据autoconf定义的宏及makefile去编译源码.