我写了一个简单的 hello world 内核模块。我编写了一个make文件,如下所示:
obj -m += hello.o
KDIR: /usr/src/linux-headers-3.2.0-21-generic-pae
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order
然后我使用make编译了模块。它工作得很好。
然后,最近我在内核更新到 3.2.0-24 时再次“制作”(当然我在 KDIR 中将版本更改为 24)。但是出现了以下错误:
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-24-generic-pae'
make[2]: *** No rule to make target `arch/x86/tools/relocs.c', needed
by `arch/x86/tools/relocs'. Stop.
我检查并发现在/arch/x86/tools/中有一个relocs的可执行文件,但没有relocs.c
出了什么问题,我应该如何纠正它才能成功编译模块?