嵌入式筆記之Makefile

2021-07-25 16:24:41 字數 748 閱讀 2391

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編寫規則中,「$@」表示規則的目標檔名,「$^」表示所有不重複的依賴檔名,「$<」表示第乙個依賴檔名。

假設現在目錄下有main.c, makefile, sub.c, sub.h四個檔案,

第1行:src變數的值為main.c和sub.c;

第2行:objs變數的值為main.o和sub.o;

第5、6行:用來生成main.o和sub.o的規則;

對main.o來說就是:

main.o: main.c

gcc -c -o main.o main.c

對sub.o來說就是:

sub.o: sub.c

gcc -c -o sub.o sub.c

第3行:即test:main.o sub.o;

第4行:根據第6行生成的main.o和sub.o檔案來生成可執行檔案test;

第7、8行:清理main.o和sub.o檔案。

嵌入式學習Makefile

make是乙個工具,用來構建和管理軟體享目。之前是個編譯乙個hello.c的程式需要一條gcc命令。但是乙個軟體工程有大量的原始檔需要gcc編譯,手工逐條敲命令編譯顯然是低效且浪費時間的。make能夠使整個軟體工程的編譯,鏈結只需要乙個命令就可以完成。makefile檔案中記錄了一系列規則 targ...

嵌入式Linux學習歷程 Makefile

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

嵌入式學習Makefile 偽目標

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