【发布时间】:2018-06-28 19:38:53
【问题描述】:
我正在尝试在 Debian 9 下构建内核模块。 我使用
安装了必要的软件包sudo apt-get install build-essential linux-headers-4.9.0-5-amd64
但是当我尝试编译我的模块时收到以下错误消息:
> make
make -C /lib/modules/4.9.0-5-amd64/build M=/home/sven/tmp/kernel modules
make[1]: Entering directory '/lib/modules/4.9.0-5-amd64/build'
make[1]: *** No rule to make target 'modules'. Stop.
make[1]: Leaving directory '/lib/modules/4.9.0-5-amd64/build'
Makefile:6: recipe for target 'all' failed
make: *** [all] Error 2
问题好像是里面没有Makefile
/lib/modules/4.9.0-5-amd64/build
目录。其实这个目录是空的…… 这可能是初学者的问题,但有人知道如何解决这个问题吗? 下面列出了内核模块的源代码以及相应的 Makefile。
非常感谢您的帮助!
模块的C代码:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Homer S.");
MODULE_DESCRIPTION("hmmmm ...");
MODULE_VERSION("1.0")
static int __init
start(void) {
printk(KERN_INFO "\nCHELLAS!\n\n");
return 0;
}
static void __exit
end(void) {
printk(KERN_INFO "\nCIAO!\n\n");
return 0;
}
module_init(start);
module_exit(end);
Makefile 编译模块:
obj-m+=foo.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
【问题讨论】:
标签: makefile module debian kernel