2014-10-01 83 views
0

我正在尝试编译一个内核模块(来自http://www.rekall-forensic.com/的pmem.ko,而不是它应该很重要)。在过去,这个编译模块已在Makefile中使用以下行的问题:编译WindRiver Linux内核模块与标准桌面版本有什么不同?

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

不应该跟随构建目录? – 2014-10-03 11:06:50

+0

在过去的(工作)体验中,KHEADER可以是完整的源代码树,也可以是标题。但是,是的,它是一个具有Makefile和合适的.config文件的构建目录。或者,如果指定了KOUTPUT目录,那么.config文件应该在那里。 – Elros 2014-10-03 15:21:53

+0

好吧,我在问,因为这看起来像使用未配置的内核树时出现的那种错误。你尝试过WindRiver支持网站吗? – 2014-10-03 15:44:34

回答

0

复制.config是不够的。

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

您构建的内核没有O =标志