为WindRiver Linux编译内核模块与标准桌面版本有什么明显不同吗?

时间:2014-10-01 17:03:42

标签: linux-kernel kernel-module

我正在尝试编译内核模块(来自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变体一起使用,或者是否需要针对不同的构建过程进行调整。

1 个答案:

答案 0 :(得分:0)

复制.config。

是不够的

实际上你应该重建内核或使用KHEADER的源路径。

你构建了没有O = flag

的内核