答案1
假设您的内核版本是 5.12 或更高版本,您显然正在查看 Linux 内核源代码包中的一个文件,路径名为<kernel source root>/drivers/net/wireless/mediatek/mt76/mt7921/Kconfig
。这是一个向进程提供信息的文件产生实际的内核配置文件。修改此文件实际上不会更改内核配置。
文本“将此驱动程序编译为模块,请在此处选择 M”是相应内核配置菜单选项的帮助文本:您可以通过make menuconfig
在<kernel source root>
目录中运行 例如 来查看内核配置菜单。该make menuconfig
命令将处理内核源代码目录树各个部分中的所有Kconfig
文件,并使用数据构建内核配置菜单,并将其呈现给您。
内核配置文件<kernel source root>/.config
分别位于。
要将这个驱动程序编译为模块,您应该在<kernel source root>/.config
其中找到一行:
# CONFIG_MT7921E is not set
或者:
CONFIG_MT7921E=y
并将该行更改为:
CONFIG_MT7921E=m
如果文件CONFIG_MT7921E
中不存在该行.config
,您可以添加它。
但我不明白你的意思“使用 Cmake 时,不生成 .ko 文件”。通常,您应该在进入目录时运行make modules
,make all
或其他 Makefile 目标之一。cd
<kernel source root>
(有一个名为 的命令cmake
,但它是一个完全不同的构建工具,在 Linux 内核构建过程中不使用。通常cmake
只是一个生成真正 Makefile 的“预处理器”,因此在构建使用 的应用程序时cmake
,您通常会首先运行cmake
,然后make
,然后make install
。但这与 Linux 内核无关。)