我正在尝试编译内核模块(来自http://www.rekall-forensic.com/的pmem.ko,而不是它应该重要)。过去,编译此模块的一个问题是在Makefile中使用以下行:
pmem: pmem.c
$(MAKE) -C $(KHEADER) O=$(KOUTPUT) M=$(PWD) modules
KHEADER设置为内核头文件的位置。如果内核最初是使用O =标志构建的,则KOUTPUT设置为匹配。否则,它与KHEADER匹配。
现在我收到如下错误消息:
make: Entering directory `<KHEADER>'
CC [M] <pwd>/module.o
In file included from <KHEADER>/include/linux/module.h:10,
from <PWD>/module.c:4:
<KHEADER>/include/linux/sched.h:4:36: error: asm/param.h: No such file or directory
注意:我已将实际路径替换为变量的内容。
我可以在这次尝试和其他尝试之间看到一个显着的差异。在以前的工作版本中,所有输出产品似乎都在相同的输出中(包括.config文件)。在此示例中,.config文件包含内核源,而不是输出目录。我修复了将.config文件复制到我看来是OUTPUT目录所导致的错误。
我想我要问的是,构建Linux内核模块的标准方法是否可以与WindRiver变体一起使用,或者是否需要针对不同的构建过程进行调整。
答案 0 :(得分:0)
复制.config。
是不够的实际上你应该重建内核或使用KHEADER的源路径。
你构建了没有O = flag
的内核