2012-01-08 45 views
0

我正在嘗試構建一些我添加到Ubuntu源代碼中的內核模塊。經過多次失敗的嘗試編譯後,我發現相同的錯誤繼續發生在不同的地方。編譯器無法找到位於文件夾中的包含目錄中的一組標題。如何將include目錄添加到內核源代碼的makefile中?

E.X.

主要文件夾:驅動器/ SCST/

子文件夾:驅動器/ SCST/iSCSI的SCST/

包括文件夾:驅動器/ SCST /包括

我如何可以添加包括文件夾makefile?

這裏是makefile;

ccflags-y += -Wno-unused-parameter 

scst-y  += scst_main.o 
scst-y  += scst_pres.o 
scst-y  += scst_targ.o 
scst-y  += scst_lib.o 
scst-y  += scst_sysfs.o 
scst-y  += scst_mem.o 
scst-y  += scst_tg.o 
scst-y  += scst_debug.o 

obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ 

我50%肯定的如何與一個「正常」的makefile做它作爲一個不與內核源代碼的工作,但我怎麼能有一個像上面這樣做呢?

在此先感謝。

回答

0

驅動程序代碼的慣例是將特定驅動程序的包含文件插入驅動程序所在的同一目錄中,幷包含爲#include "header.h"。但如果你想這樣做,你的方式使用gcc的-I選項,所以它可能看起來像-Idrivers/scst/include或沿着這些線的東西,它應該被添加到ccflags。注意:這個路徑可能會根據你正在編輯的Makefile的位置而改變。

+0

我真的沒有一個正確的方法,我只是想讓這個東西編譯正確。所以你說我應該將「include」文件的內容複製到需要它們的目錄中? – ianc1215 2012-01-08 02:48:01

+0

是的,因爲驅動程序中使用的標頭通常是特定於驅動程序的,並且標準約定是,如果僅在驅動程序中使用它,則將其添加到相同的目錄中。如果在通用內核邏輯中使用它,它將在include/linux中進行,如果它的體系結構特定並在多個點中使用,它將包含在include/asm – 2012-01-08 02:48:58

+0

因此,如果所有正在構建的SCST模塊模塊都需要這些頭文件,我應該添加它們以包含/ linux的權利,因爲他們不具體的拱?即使他們只用於這個項目? – ianc1215 2012-01-08 03:08:01

相關問題