2012-11-17 21 views
2

我將一個驅動程序移植到3.4內核中,當我做一個make clean時,它並不清除一些.o文件,所以現在我想知道什麼是正確的方法這樣做是。如何在內核Makefile中正確清理

我有下面的Makefile(注:從內核中一個單獨的目錄):

obj-y += foo.o 
foo-objs += foo1.o foo2.o 
clean-files := foo3.o 

當我運行make乾淨,它打掉foo3.o,但留下foo.o的,foo1。 o和foo2.o.我可以把所有這些都放到乾淨的文件中,但這似乎是多餘的,我認爲有一些方法可以讓Makefile自動清除obj-y目錄中的所有對象。

感謝,

約翰

回答

1

您可以使用正則表達式生成文件,並寫入* .o而不是foo1.o,foo2.o等

常見的方式是有「乾淨」的目標,這看起來是這樣的:

clean: 
    $(RM) .*.cmd *.o *.ko -r .tmp* 
+0

關於此問題的兩個簡單問題:1)乾淨目標與乾淨文件相比如何? 2)另外,我似乎在一個較舊的內核中工作(2.6.30)。任何想法可能會改變? – John

+0

看起來這個變量是由內核腳本進行的:http://lxr.linux.no/linux+v3.6.7/scripts/Makefile.clean –

+0

看起來乾淨的目標沒有在這些Makefile中被調用,是我的問題的根源。清潔文件和清潔文件夾正在被擦除... – John

2

這是我對make clean用我的驅動程序代碼的方式:

clean: 
    $(MAKE) -C $(KDIR) M=$$PWD clean