Linux内核Makefile如何理解.config?

Linux内核Makefile如何理解.config?

Linux内核Makefile如何理解.config?它有 defconfig 文件的解析器吗?它必须为 defconfig 中的每个启用选项生成大量 #define,并且还根据 .config 文件中的指令维护许多已编译或未编译的次要 Makefile。

答案1

该文件的语法.config与make兼容;例如,像这样的行将CONFIG_CRC16=mmake 变量设置CONFIG_CRC16为 value m。它由 make 解析并间接包含在 toplevel 中Makefile

  • Makefile包含-include include/config/auto.conf
  • include/config/auto.confMakefile通过递归调用目标上的顶层来构建silentoldconfig

文件的条件编译主要是通过使用目标名称来完成的:makefile 包含如下规则

obj-$(CONFIG_CRC16) += crc16.o

因此,目标obj-y构建通过配置选项启用为内置的所有对象,并obj-m构建作为模块启用的所有对象。对于更复杂的情况,makefile 中还有条件指令。

对于 C 语言中的条件编译,C 源文件包含include/generated/autoconf.h以下行#define CONFIG_CRC16_MODULE 1:该文件由目标include/config/auto.conf调用的程序生成xxxconfigscripts/kconfig/conf对于批处理目标,如oldconfigscripts/kconfig/qconfforxconfig等);其源代码scripts/kconfig/confdata.c进行一些非常简单的文本处理。

相关内容