编译一个简单的内核模块时遇到麻烦



我正在尝试编译一个简单的内核模块。我确实有一个完全编译的内核,并且uname -r实际上确认我正在运行我编译的内核。

我有一个小的Makefile来完成这项工作,如下所示:
obj-m := exo1_simple_module.o
all:
      make -C /lib/modules/$(uname -r)/build M=$(PWD) modules
clean:
      make -C /lib/modules/$(uname -r)/build M=$(PWD) clean

c文件命名为exo1_simple_module.c/home/tom/work/kernel_modules

目录下

当我运行make时,我得到一个错误:

没有规则使目标'/home/tome/work/kernel_modules/ex01_simple_module.c需要/home/tom/work/kernel_modules/exo1_simple_module.o

不知怎么的,我认为我应该给gcc一个缺失的开关或命令选项。

你为什么这样做

obj-m := exo1_simple_module.o
当示例显示 时

obj-m += exo1_simple_module.o

我也注意到你在uname -r之前去掉了shell

最新更新