在makefile中,除第一條命令外,每一條命令的開頭必須是tab製表符,比如:
cc= arm-linux-gcc
exec = hello
objs = hello.o
cflags+=
ldflags+=-static
all:$(exec)
$(exec):$(objs)
$(cc) $(ldflags) -o $@ $(objs)
clean:
rm -f $(exec) *.elf *.gdb *.o
次makefile檔案的幾個主要部分:
cflags 編譯引數
ldflags 連線引數(以上兩個是makefile變數)
all: 編譯主入口
clean: 清除編譯結果
其中$(cc) $(ldflags) -o $@ $(objs)和 rm -f $(exec) *.elf *.gdb *.o是命令,這兩行的開頭是tab,其他行不能以tab開頭。
可以這麼認為,makefile中tab開始的行代表是命令。
另外,以下是一些gnu make預定義變數:
$* 不包含副檔名的目標檔名稱
$+ 所有的依賴檔案,以空格分開,有序,可能包含重複的依賴檔案
$? 所有的依賴檔案,以空格分開,依賴檔案的修改日期比目標的建立日期晚
$^ 所有的依賴檔案,以空格分開,不包含重複的依賴檔案
$< 第乙個依賴檔案的名稱
$@ 目標的完整名稱
若一行過長,可用反斜槓(/)作換行符,這樣就可以作為一行出理了。 一般make使用makefile作為makefile檔案,若使用其他可使用命令: make -f makefile1
編譯驅動Makefile解析
ubuntu的核心原始碼樹,如果要編譯在ubuntu中安裝的模組就開啟這2個 kern ver shell uname r kern dir lib modules kern ver build 開發板的linux核心的原始碼樹目錄 kern dir root driver kernel obj m...
makefile檔案介紹
cflags 表示用於 c 編譯器的選項,cxxflags 表示用於 c 編譯器的選項。這兩個變數實際上涵蓋了編譯和彙編兩個步驟。cflags 指定標頭檔案 h檔案 的路徑,如 cflags i usr include i path include。同樣地,安裝乙個包時會在安裝路徑下建立乙個incl...
makefile檔案製作
makefile檔案製作 個人課堂筆記 臥槽,怎麼把別人名字洩露了的 工程管理器make 很多原始檔組成的 結構組成乙個專案工程,這些檔案可能位於不同目錄下 make 批處理編譯工程檔案 makefile 編譯邏輯 如何執行批處理make命令,沒有makefile無法執行make命令 make he...