2017-03-17 37 views
1

我想通過執行一個Makefile來創建多個內核模塊。在不同的子目錄中創建/構建多個內核模塊

我有以下目錄和文件:

  • 頂級目錄:
    • subdir0:
      • module0.c
      • 的Makefile
    • subdir1:
      • module1.c
      • 的Makefile
    • subdir2:
      • module2.c
      • 的Makefile
    • Makefile文件(我想執行這個)

我想只執行頂級目錄中的Makefile,並且應該執行所有子目錄Makefile。我想爲每個子目錄獲取一個內核模塊。

這是我目前的設置,但它不起作用。如果我在子目錄中執行make,它會生成正確的* .ko文件。但是如果我執行最高級別的Makefile,它只會生成Module.symvers和modules.order,並且輸出看起來像每個Makefile都會被執行,但是在子目錄內沒有任何東西被創建。

我頂層Makefile文件有如下內容:

TARGETS := all clean 
SUBDIRS := subdir0 subdir1 subdir2 

.PHONY: $(TARGETS) $(SUBDIRS) 

$(TARGETS): $(SUBDIRS) 

$(SUBDIRS): 
    $(MAKE) -C [email protected] $(MAKECMDGOALS) 

我子目錄Makefile中有以下代碼:

obj-m += module0.o 

all: 
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 

我會很高興,如果有人可以幫助我。

感謝, 米莎

+1

Make toplevel * Makefile * similar,但使用'obj-y + = subdir0 /'等 – 0andriy

+0

謝謝,我會試試看:) – p0kR

+1

@ 0andriy這正是我想要的,非常感謝。 如果你已經寫了這個答案,我已經接受了:) – p0kR

回答

0

正如@ 0andriy說,我不得不使用類似子目錄的Makefile一個Makefile。但不是添加obj-m條目,而是將所有子目錄添加到obj-y。

相關問題