Makefile无法构建内核模块“配方在第一个目标之前开始”

时间:2019-07-14 18:47:01

标签: c linux linux-kernel

我尝试从https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf构建示例2.1。

我尝试使用Google搜索来寻找答案,并且所有相关的线程都归因于由于错误而被复制的Makefile。因此,我尝试重新键入makefile,也尝试了其他人的Makefile。但是我总是遇到同样的错误。

lkm.c:

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */

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

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

Makefile:

obj-m += lkm.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

这是我得到的错误:

philip@ubuntu:~/test$ make
make -C /lib/modules/5.0.0-20-generic/build M=/home/philip/test modules
make[1]: Entering directory '/usr/src/linux-headers-5.0.0-20-generic'
make[2]: *** No rule to make target '/home/philip/test/lkm.c', needed by '/home/philip/test/lkm.o'.  Stop.
make[1]: *** [Makefile:1605: _module_/home/philip/test] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.0.0-20-generic'
make: *** [Makefile:4: all] Error 2

1 个答案:

答案 0 :(得分:0)

解决了!我目录中的文件名为lkm而不是lkm.c。感谢您的答复:)