2014-10-01 80 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 =標誌