嵌入式學習Makefile

2021-08-21 17:12:33 字數 1103 閱讀 6210

make是乙個工具,用來構建和管理軟體享目。之前是個編譯乙個hello.c的程式需要一條gcc命令。但是乙個軟體工程有大量的原始檔需要gcc編譯,手工逐條敲命令編譯顯然是低效且浪費時間的。

make能夠使整個軟體工程的編譯,鏈結只需要乙個命令就可以完成。

makefile檔案中記錄了一系列規則

target:prerequisites

command

target:目標檔案

prerequisites:目標檔案的依賴

command:產生目標檔案的命令

三者合一就是一條規則

hello:main.o func1.o func2.o

gcc main.o func1.o func2.o -o hello

main.o: main.c

gcc -c main.c

func1.o: func1.c

gcc -c func1.c

func2.o: func2.c

gcc -c func2.c

.phony:clean

clean:

rm -f hello.o main.o func1.o func2.o

經過測試make只能識別檔名為makefile或者makefile的檔案

.phony關鍵字

可以用.phony關鍵字宣告偽目標,為目標就是只有執行動作,沒有依賴的目標。

定義makefile變數

obj = main.o func1.o func2.o func3.o

hello:$(obj)

gcc $(obj) -o hello

makefile中系統預設的自動化變數
hello: main.o func1.o func2.o

gcc main.o func1.o func2.o -o hello

等價於hello:main.o func1.o func2.o

gcc $^ -o $@

mailefile中的注釋

「#」可以用來注釋當前行

嵌入式Linux學習歷程 Makefile

makefile用來完成以下功能 1 如果工程沒有編譯過,那麼工程中的所有.c檔案都要被編譯並且鏈結成可執行檔案。2 如果工程中只有個別c檔案被修改了,那麼只編譯這些被修改的c檔案。3 如果工程的標頭檔案被修改了,那麼需要編譯所有引用這個標頭檔案的c檔案,並且鏈結成可執行檔案。例 乙個工程 通過鍵盤...

嵌入式學習Makefile 偽目標

偽目標makefile的乙個重要的特殊目標。偽目標 它不代表乙個真正的檔名,在執行make時可以指定這個目標來執行其所在規則定義的命令,也可以將乙個偽目標稱為標籤。使用偽目標有兩點原因 1 避免在我們的makefile中定義的只執行命令的目標 就是說定義該目標的目的是為了執行一系列的命令,比如cle...

嵌入式筆記之Makefile

1 src shell ls c 2 objs patsubst c,o,src 3 test objs 4 gcc o 5 o c 6 gcc c o 7 cleam 8 rm f test o 注 在makefile編寫規則中,表示規則的目標檔名,表示所有不重複的依賴檔名,表示第乙個依賴檔名。假...