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

Linux kernel 为WindRiver Linux编译内核模块与标准桌面版本有什么显著不同吗?,linux-kernel,kernel-module,Linux Kernel,Kernel Module,我试图从编译内核模块pmem.ko,这并不重要。在过去,编译此模块需要在Makefile中使用以下行: pmem: pmem.c $(MAKE) -C $(KHEADER) O=$(KOUTPUT) M=$(PWD) modules KHEADER设置为内核头的位置。如果内核最初是用O=标志构建的,那么KOUTPUT设置为匹配。否则,它与KHEADER匹配 现在,我收到如下错误消息: make: Entering directory `<KHEADER>' CC [M]

我试图从编译内核模块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文件复制到我认为是输出目录的地方所导致的错误


我想我要问的是,构建linux内核模块的标准方法是否适用于WindRiver变体,或者是否需要针对不同的构建过程进行调整。

仅复制.config是不够的

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


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

不应该在-C后面跟build目录吗?根据过去的工作经验,KHEADER可以是完整的源代码树,也可以只是头文件。但是是的,它是一个包含Makefile和合适的.config文件的构建目录。或者,如果指定了KOUTPUT目录,那么.config文件应该在那里。好的,我是这样问的,因为这看起来像是使用未配置的内核树时出现的错误。您是否尝试过WindRiver支持站点?