【发布时间】:2019-07-15 08:25:38
【问题描述】:
我尝试从 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
【问题讨论】:
-
不确定这对您是否重要,但您的名字可能会出现在您发布的那个堆栈中。
-
没问题。我知道。
-
你安装内核头文件了吗?
-
linux-headers-5.0.0-20-generic 已安装
-
将
make V=1而不是make放在上面Makefile的目标all:中并提供输出。
标签: c linux linux-kernel