Kconfig,Makefile 和 .config

本文介绍了Linux内核配置中Kconfig、Makefile和.config文件的作用。Kconfig构成配置数据库,用于生成配置菜单,用户配置后保存在.config中。Makefile读取.config内容进行编译。Kconfig中的选项包括config、menuconfig等,用于定义菜单结构和依赖关系。Makefile则负责整体构建内核和模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最新在做Sensor驱动移植的时候,发现了Android driver 中有Kconfig,Makefile文件。在查看编译后的文件时,又发现还存在.config文件。自己对这几个文件不明白,用度娘来整理下网友对这几个文件的理解。

        分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。

Kconfig

    先来看下一个相对完整的Kconfig文件:

menuconfig MISC_DEVICES
        bool "Misc devices"
        ---help---
          Say Y here to get to see options for device drivers from various
          different categories. This option alone does not add any kernel code.

          If you say N, all options in this submenu will be skipped and disabled.

if MISC_DEVICES

config ST_L3GD20_GYR
        tristate "L3GD20_GYR gyroscope sensor support"
        
linzihao@linzihao-virtual-machine:~/Code/test/coursework2/work5/linux-5.15.93$ make menuconfig HOSTCC scripts/basic/fixdep UPD scripts/kconfig/mconf-cfg HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/menu.o HOSTCC scripts/kconfig/parser.tab.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTCC scripts/kconfig/util.o HOSTLD scripts/kconfig/mconf .config:898:warning: symbol value 'm' invalid for HOTPLUG_PCI_SHPC .config:1126:warning: symbol value 'm' invalid for NF_CT_PROTO_GRE .config:1154:warning: symbol value 'm' invalid for NF_NAT_REDIRECT .config:1157:warning: symbol value 'm' invalid for NF_TABLES_INET .config:1158:warning: symbol value 'm' invalid for NF_TABLES_NETDEV .config:1341:warning: symbol value 'm' invalid for NF_TABLES_IPV4 .config:1346:warning: symbol value 'm' invalid for NF_TABLES_ARP .config:1388:warning: symbol value 'm' invalid for NF_TABLES_IPV6 .config:1906:warning: symbol value 'm' invalid for NET_DEVLINK .config:2058:warning: symbol value 'm' invalid for MTD_NAND_ECC .config:3519:warning: symbol value 'm' invalid for ISDN_CAPI .config:4001:warning: symbol value 'm' invalid for HW_RANDOM_TPM .config:4950:warning: symbol value 'm' invalid for LIRC .config:5761:warning: symbol value 'm' invalid for HSA_AMD .config:6175:warning: symbol value 'm' invalid for SND_SOC_INTEL_SST_TOPLEVEL .config:6180:warning: symbol value 'm' invalid for SND_SOC_INTEL_MACH .config:7793:warning: symbol value 'm' invalid for PVPANIC .config:7867:warning: symbol value 'm' invalid for REMOTEPROC Your display is too small to run Menuconfig! It must be at least 19 lines by 80 columns. scripts/kconfig/Makefile:48: recipe for target 'menuconfig' failed make[1]: *** [menuconfig] Error 1 Makefile:620: recipe for target 'menuconfig' failed make: *** [menuconfig] Error 2——为什么我在运行这一步的时候会报该错误
最新发布
08-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值