我正在尝试编译一个内核模块(来自http://www.rekall-forensic.com/的pmem.ko,这并不重要)。在过去,编译此模块只需在Makefile中使用以下行:
pmem: pmem.c
$(MAKE) -C $(KHEADER) O=$(KOUTPUT) M=$(PWD) modulesKHEADER设置为内核头的位置。如果内核最初是使用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文件复制到我看来是输出目录而导致的错误。
我猜我想问的是,构建linux内核模块的标准方法是否适用于WindRiver变体,或者是否需要针对不同的构建过程进行调整。
发布于 2014-10-10 00:33:50
复制.config是不够的。
实际上,您应该重新构建内核或使用KHEADER的源代码路径。
您在构建内核时没有使用O=标志
https://stackoverflow.com/questions/26146667
复制相似问题