target.
..:dependencies
command ..
.(1)目標target程式產生的檔案,如可執行檔案和目標檔案,中間檔案(
.s檔案);
目標也可以是要執行的動作,如:clean,也稱之為偽目標
(2)依賴depandencies是用來產生目標的輸入檔案列表,乙個目標通常依賴於多個檔案
(3)命令command是make執行的動作(命令是shell命令或者是可在shell下執行的程式)。
注意:每個命令列的起始字元必須為tab字元
(4)如果dependencies中有乙個或多個檔案更新的話,command就要執行,這就是makefile最核心的內容
目標檔案可以有1個或者多個
依賴檔案可以有1個或者多個,也可以沒有
只有main.c有**,**如下:
intmain
(void
)
.phony:clean ##顯示指定clean為乙個偽目標,怕該目錄下有個clean名字的檔案,不能編譯
main:main.o add.o sub.o
gcc -wall -g main.o add.o sub.o -o main
main.o:main.c
gcc -wall -g -c main.c -o main.o
add.o:add.c add.h
gcc -wall -g -c add.c -o add.o
sub.o:sub.c sub.h
gcc -wall -g -c sub.c -o sub.o
clean:
rm -f main main.o add.o sub.o
.phony:clean
objects=main.o add.o sub.o
main:$(objects)
gcc -wall -g $^
-o $@
main.o:main.c
gcc -wall -g -c $<
-o $@
add.o:add.c add.h
gcc -wall -g -c $<
-o $@
sub.o:sub.c sub.h
gcc -wall -g -c $<
-o $@
clean:
@echo "begin delete ..." ##該語句(echo "begin delete ..."
)不想列印出來,就在最前面加乙個@符號
rm -f main $(objects)
make 直接輸入make會執行第乙個目標
make main.o make +目標也可以執行,但是只執行該目標的命令
make makefile makefile檔案名字也可以是makefile
make clean -f makefile.
1 表示用makefile.
1中的規則來執行,指定makefile檔案
$@規則的目標檔名
$<
規則的第乙個依賴檔名
$^規則的所有依賴檔案列表
%
.o:%
.c
.c.o:
==
*****==
03make\02\01test.c==
====
====
intmain
(void)==
====
====
====
====
====
====
====
====
*****==
03make\02\02test.c==
====
====
====
=int
main
(void)==
====
====
====
====
====
pub.c和pub.h都為空
.phony:clean all
bin=
01test 02test ##直接執行:make makefile
all:$(bin) ##all也是偽目標,這裡並沒有給01test,02test是如何生成的,編譯器會自動推導,
clean: ##會將同名的.c檔案生成同名的可執行檔案,eg:01test.c生成01test
rm -f $(bin)
.phony:clean all
cc=gcc
cflags=
-wall -g
bin=
01test 02test
all:$(bin) ##all代表第乙個終極目標
%.o:
%.c ##將對應的.c檔案生成對應的.o檔案,等價於.c.o:
$(cc) $(cflags)
-c $<
-o $@
01test:
01test.o
$(cc) $(cflags) $^
-o $@ ##生成可執行檔案不需要-c
02test:
02test.o pub.o ##若02test還依賴pub模組(pub.c,pub.h)
$(cc) $(cflags) $^
-o $@
clean:
rm -f $(bin)
*.o
Linux開發工具 gdb和make
gdb主要有以下幾個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 你可以改變你的程式,將乙個bug產生的影響修正從而測試其他bug。進入gdb...
Linux開發工具
linux開發工具 vim gcc gdb make git github 文字編輯器 vim 功能最強大 1 使用 三種模式 命令列模式 插入模式 底行模式 vim 空格 檔名 例如vim hello.c 此時是命令列模式 無法插入資料 需要進入插入模式 按i或者a 退出插入模式 按esc 切換到...
嵌入式開發工具gdb和make
掌握嵌入式開發工具gdb和make的使用 1 嵌入式開發工具 gdb 2 嵌入式開發工具make 周五一天 gcc c 1.c gcc wall 1.c 檢查1.c 有沒有問題 a.out 執行 1.什麼是工程 專案?專案 多個原始檔 資源檔案構成的專案 2.如何編譯多個原始檔的 1000個原始檔,...