自定义内核模块未编译

自定义内核模块未编译

我正在玩linux内核,尝试编写一些模块。我将它们添加到 Linux 源代码中的 /drivers/my_module/my_module.c 下。 (我使用的是内核 4.9,在 debian 9 上,make 4.1)

这里是:

#include <linux/module.h>

__init static int my_module_init(void)
{
    pr_info("Hello World!\n");
    return 0;
}

__exit static void my_module_exit(void)
{
    return;
}

module_init(my_module_init);
module_exit(my_module_exit);

我写了一个简单的Kconfig和Makefile:Makefile: obj-$(CONFIG_MY_MODULE) += my_module.o Kconfig:

menu "My first module"

config MY_MODULE
        bool "My module"
        help
        The dumbest kernel module you could find on the market !

endmenu

我将其添加到 /drivers 中的 Kconfig 和 Makefile 中:

内核配置:source "drivers/my_module/Kconfig"

生成文件:obj-$(CONFIG_MY_MODULE) += my_module/

我以为,到目前为止一切都很好,但是,当我CONFIG_MY_MODULE=y在 linux 的 .config 文件中添加我的时,运行 make 时它没有被编译(它没有出现在编译输出中,启动内核时跟踪中也没有出现任何内容),我不明白为什么。我猜这与未在 drivers/Makefile 中定义的变量有关,但似乎其他模块使用相同的策略,并且它们是与内核一起编译的。

所以我想我错过了一些东西,但我无法真正弄清楚是什么。

相关内容