要对这个整体 Kconfig Wifi 驱动程序文件进行哪些更改才能将其编译为模块?现在,使用Cmake时,没有生成Ko文件

要对这个整体 Kconfig Wifi 驱动程序文件进行哪些更改才能将其编译为模块?现在,使用Cmake时,没有生成Ko文件

在此输入图像描述

这是当前的Kconfig文件和make文件

答案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 内核无关。)

相关内容