defconfig 编译选项依赖关系(Kconfig,select、depends on)
- 作者:吴思含(Witheart)
- 更新时间:20260121
例子
- 如下,depends on 和 select 分别代表什么含义:
Kconfig
config BRCMFMAC
tristate "Broadcom FullMAC WLAN driver"
depends on m
depends on CFG80211
select BRCMUTIL
help
This module adds support for wireless adapters based on Broadcom
FullMAC chipsets. It has to work with at least one of the bus
interface support. If you choose to build a module, it'll be called
brcmfmac.ko.
见:https://docs.kernel.org/kbuild/kconfig-language.html#menu-attributes
depends on(依赖于)
含义:定义当前配置项的依赖条件,只有满足这些条件时,当前选项才可见/可配置。
在示例中的作用:
kconfig
depends on m
depends on CFG80211
tristate 表示BRCMFMAC是三态选项,y、m、n
-
depends on m:表示限制BRCMFMAC只能被编译为模块,而不能直接编译进内核,也就是由三态变为只有 m 和 n 两种状态。
-
depends on CFG80211:表示依赖CFG80211配置项,但是不会强制开启CFG80211
select(选中)
含义:定义反向依赖关系。当当前配置项被选中时,会自动选中指定的其他配置项。
在示例中的作用:
kconfig
select BRCMUTIL
- 当用户选择启用
BRCMFMAC时 - 系统会自动启用
BRCMUTIL配置项 - 这表示
BRCMFMAC需要BRCMUTIL的支持才能正常工作
关键区别
| 维度 | depends on | select |
|---|---|---|
| 方向 | 我依赖别人 | 我拉起别人 |
| 是否自动开启 | ❌ 不会 | ✅ 会 |
| 是否检查对方依赖 | ✅ 会 | ❌ 不会 |
| 风险 | 几乎没有 | 可能破坏依赖 |