第二課 初識makefile的結構

2021-10-22 04:55:04 字數 2084 閱讀 6649

makefile的意義

# 乙個最基本的依賴的規則如下:

target : prerequisites ; command1

'\t'command2

makefile中的元素含義

prerequisities

command

規則中的注意事項

續行符: 』\『

乙個makefile的依賴示例

all : test

echo "make all"

test :

echo "make test"

上面所展示的makfile中,all目標依賴test目標,所以必須要test存在,才能保證all目標執行echo "make all"命令完成目標。test目標沒有依賴,所以只需要執行echo "make test"即可完成其目標。

實驗截圖

依賴規則

小技巧第乙個make的編譯案例

hello.out : main.o func.o

gcc -o hello.out main.o func.o

main.o : main.c

gcc -o main.o -c main.c

func.o : func.c

gcc -o func.o -c func.c

依賴關係如下圖所示:

hello.out需要func.o和main.o的存在,並且執行對應的命令才能完成。main.o依賴於main.c,並執行相應命令才能完成。func.o依賴func.c,並執行相應命令才能完成。

實驗結果:

如果我們修改main.c,再次執行make,func.o沒有被重新生成,而只有main.o和hello.out的目標對應的命令被執行了。因為func.o存在,且在時間上比 func.c更新,所以該目標對應的命令不會執行,無需重新生成func.o檔案。

將hello.out目標改為all,如下所示:

all : main.o fun.o

gcc -o hello.out main.o func.o

main.o : main.c

gcc -o main.o -c main.c

func.o : func.c

gcc -o func.o -c func.c

當我們再次執行make時,gcc -o hello.out main.o func.o,這句命令總會執行,即使依賴檔案並沒有更新,這是因為在當前目錄下並沒有乙個名為all的檔案存在,所以make在解析makefile時,會按照依賴規則的第一條進行解析,因此,命令會被執行。

實驗結果

將hello.out和all目標寫在一起又會發生什麼?

hello all : main.o fun.o

gcc -o hello.out main.o func.o

main.o : main.c

gcc -o main.o -c main.c

func.o : func.c

gcc -o func.o -c func.c

當執行make時,make直譯器預設的目標是為hello.out。如果當前目錄下會存在hello.out檔案,當依賴(即func.c main.c檔案)不改變時,執行make命令不會去更新最終的可執行檔案,僅僅給出檔案是最新的提示。

實驗結果

小結:

Linux重修第二課(初識SHELL)

mv info 擴充套件為mv info info.old cmd 後台執行 cmd 在自shell中執行 cmd1 cmd2 注意是反引號,將cmd2的結果作為1的引數 cmd cmd2 1成功後才執行2,還可以替換成 表示1執行失敗才執行2 幾種shell的配置檔案路徑 sh bash prof...

第二課 安裝PHP

為什麼要安裝php?php是伺服器端解析程式,一般執行在網路伺服器上。而編寫php語言的程式我們一般是在自己的個人電腦上完成,然後拿到伺服器上除錯。所以,學習php首先要讓我們的個人電腦模擬伺服器執行環境,讓php能象在伺服器上一樣在我們的個人電腦上執行。這就是為什麼要安裝配置php的原因。安裝配置...

csdn之旅 第二課

1.html標題的標籤 1 注意 只能到,在往後就沒有作用了。2 標籤特點 可以區別其他文字,比如可以加粗 效果圖如 笑對生活!笑對生活!笑對生活!笑對生活!改變字型大小 可以自動換行 2.html段落標記 用元素 注意 標籤和標籤之間的關係 可以巢狀使用 但不可以交叉 3.html常用標記 單標記...