按书上的编译模块,在写好了Makefile和first.c之后,执行make指令,出现了以下错误:
os@os-virtual-machine:~/文档/OS$ makehttp://ask.csdn.net/pages/markdown
make -C /lib/modules/4.16.3/build M=/home/os/文档/OS modules
make[1]: Entering directory '/home/os/linux-4.16.3'
make[2]: *** No rule to make target '/home/os/文档/OS/first.o', needed by '/home/os/文档/OS/fir.o'。 停止。
Makefile:1561: recipe for target '_module_/home/os/文档/OS' failed
make[1]: *** [_module_/home/os/文档/OS] Error 2
make[1]: Leaving directory '/home/os/linux-4.16.3'
Makefile:6: recipe for target 'default' failed
make: *** [default] Error 2
我写的Makefile文件:
obj-m:=fir.o
fir-objs:=first.o
KDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
default:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
(make前面是tab,复制过来有问题)
我写的first.c文件:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
static int first_init(void) {
struct task_struct *p;
p=NULL;
printk(KERN_ALERT"first start");
printk(KERN_ALERT"名称\t进程号\t状态\t优先级\t父进程PID");
for_each_process(p){
printk(KERN_ALERT"%s\t%d\t%d\t%d\t%d\n",p->comm,p->pid, p->state,p->prio,p->parent->pid);
}
return 0;
}
static void first_exit(void)
{
printk(KERN_ALERT"first exit");
}
module_init(first_init);
module_exit(first_exit);
MODULE_LICENSE("GPL");
Makefile和first.c都在文档下新建的os文件夹中,我在其他地方也尝试过,没什么结果。
跪求大神指点