1. 程式人生 > >父makefile呼叫子makefile和 objs用法

父makefile呼叫子makefile和 objs用法

一、呼叫子目錄Makefile
        Makefile只負責編譯當前目錄中的物件。
        子目錄中的物件,由子目錄中的Makefile負責。
        如何讓make呼叫子目錄中的Makefile?答案是把子目錄包含到obj-y或obj-m中。
        例如:
        #fs/Makefile
        obj-$(CONFIG_EXT2_FS) += ext2/
        當CONFIG_EXT2_FS為y或m時,kbuild系統會在ext2目錄中呼叫make命令(也即呼叫ext2目錄中的Makefile)
        
        2.2 lib-y和lib-m
        在一個目錄下,obj-y所列出的檔案,將被編譯成built-in.o檔案,而lib-y或lib-m所列出的檔案,將在當前目錄下生成lib.a檔案。
        注意:一般lib-y或lib-m只用在lib/和arch/*/lib這兩個目錄中。
        
        
 obj-y 是編譯到核心,obj-m是編譯成模組,obj-$是什麼?




$(CONFIG_TEST) 是一個整體,$(xxx)表示引用變數 xxx
 
比如定義 CONFIG_TEST=y
 $(CONFIG_TEST)就是y
   obj-$(CONFIG_TEST) 就是 obj-y
    
  又比如定義 CONFIG_TEST=m
 $(CONFIG_TEST)就是m

   obj-$(CONFIG_TEST) 就是 obj-m

二、

2.objs用法
obj-y = main.o

main-objs := a.o   \  b.o \     c.o

將a.c b.c c.c三個檔案編譯後連結生成main.o