我的 makefile 结果是:没有规则来生成目标“arch/x86/tools/relocs.c”,需要

我的 makefile 结果是:没有规则来生成目标“arch/x86/tools/relocs.c”,需要

我正在使用 Ubuntu 12.04。我编写了一个简单的 hello world 内核模块(hello.c)。我为其编写了以下 makefile:

obj-m+=hello.o
KDIR:= /usr/src/linux-headers-3.2.0-24-generic-pae
all:
     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
     rm -rf *.o *.ko *.mod.* *.symvers *.order 

但是当我从内核进行 make 时出现了这个错误:

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.

hello.cmakefile/Documents/module_prog。我make从该目录运行。

是什么原因导致了此错误?我该如何修复它?

答案1

在 make 文件中,只需更改SUBDIRS=$(PWD)M=$(shell pwd)...

效果很好

答案2

所需的 i386 标头:

sudo apt-get install linux-headers-$(uname -r | sed 's/\(.*\)-[a-z]*/\1/'):i386

例子:

sudo apt-get install linux-headers-5.4.0-42:i386

答案3

获取特定内核的头文件...使用稍微不那么聪明的@Thantelius 答案版本可能会更成功:

apt search linux-headers-$(uname -r)
apt install <package name showing in the search>

然而在大多数最新/主要的发行版中,应该默认安装标头

答案4

遇到这个问题很长时间后,我的解决方案是将 makefile 从 重命名makefileMakefile

相关内容