1. 程式人生 > >Linux makefile中的obj-$(XXX)

Linux makefile中的obj-$(XXX)

$(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

==============================================================

目標定義是Kbuild Makefile的主要部分,也是核心部分。主要是定義了要編譯的檔案,所有的選項,以及到哪些子目錄去執行遞迴操作。 最簡單的Kbuild makefile 只包含一行: 例子: obj-y += foo.o 該例子告訴Kbuild在這目錄裡,有一個名為foo.o的目標檔案。foo.o將從foo.c 或foo.S檔案編譯得到。 如果foo.o要編譯成一模組,那就要用obj-m了。所採用的形式如下: obj-y += /usr/kernel/ 表示該目錄下的對應所有檔案生成的 .o 目標檔案。 例子: obj-$(CONFIG_FOO) += foo.o $(CONFIG_FOO)可以為y(編譯進核心) 或m(編譯成模組)。如果CONFIG_FOO不是y 和m,那麼該檔案就不會被編譯聯接了 除了y、m以外的obj-x 形式的目標都不會被編譯。 除了obj-形式的目標以外,還有lib-y library 庫、hostprogs-y 主機程式等。