我尝试从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
答案 0 :(得分:0)
解决了!我目录中的文件名为lkm而不是lkm.c。感谢您的答复:)