Makefile檔案解析

2021-04-19 02:00:53 字數 861 閱讀 5510

在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...