我尝试编译简单的linux内核模块:

#include <linux/module.h>
#include <linux/kernel.h>

int init_module(void)
{
        printk("Hello world 1.\n");
        return 0;
}

void cleanup_module(void)
{
        printk(KERN_ALERT "Goodbye world 1.\n");
}

我的makefile:
obj-m = testmodule.o
KVERSION = $(shell uname -r)
all:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

现在,我的.c文件中没有错误。

但是,当我尝试在终端中进行make时:make:对“all”没有任何 react 。

怎么了?

谢谢你。

最佳答案

您的makefile中的默认命令是

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

指示make将cd转到/lib/modules/$(KVERSION)/build并运行
make module m=YOUR_CURRENT_DIR

反过来,该makefile没有找到任何要做的事情。大概该makefile期望在您的当前目录中找到一些特定的结构。

您需要更仔细地阅读导致您设置此makefile的任何说明。

关于c - Linux内核模块编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4063632/

10-11 17:20