我试图从https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf构建示例2.1。
我试着用谷歌搜索答案,所有相关的线程都被错误地复制到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");
}
生成文件:
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
最佳答案
解决了的!我的目录中的文件名为lkm,而不是lkm.c。感谢您的回复:)
关于c - Makefile无法构建内核模块“配方在第一个目标之前开始”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57030220/