请帮忙,我创建了一个名为 hello.c 的文件
#include linux/module.h
#include linux/kernel.h
#include linux/init.h
static int __init hello_start(void){
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world Mr. Praktikan\n");
return 0;
}
static void __exit hello_end(void){
printk(KERN_INFO "Goodbye Mr. Praktikan\n");
}
module_init(hello_start);
module_exit(hello_end);
然后我制作 Makefile
obj-m = hello.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
但是当我用“make”运行它时,它显示一些错误
make -C /lib/modules/5.0.0-32-generic/build M=/home/nisrina/Documents/Bab 2 modules
make[1]: Entering directory '/usr/src/linux-headers-5.0.0-32-generic'
arch/x86/Makefile:147: CONFIG_X86_X32 enabled but no binutils support
make[1]: *** No rule to make target '2'. Stop.
make[1]: Leaving directory '/usr/src/linux-headers-5.0.0-32-generic'
Makefile:4: recipe for target 'all' failed
make: *** [all] Error 2
我应该怎么办?:(
答案1
我刚才遇到了这个问题。
从构建路径中删除空格。
使-C /lib/modules/5.0.0-32-generic/build M = / home / nisrina / Documents /Bab 2 模块
应该
制作-C /lib/modules/5.0.0-32-generic/build M = / home / nisrina / Documents / Bab_2_modules
我知道这听起来像是一个愚蠢的解决办法,但它对我来说很有效。