學習Makefile第一課 概述

2021-06-25 09:02:33 字數 2444 閱讀 1465

(一).規則

target:prerequisites.....

(tab)command

(tab) ......

(tab) ......

clean:

(tab)command

注:命令command前面一定要加乙個tab鍵,命令過多可以用反斜槓「\」表示換行。

1.target:目標檔案(可以是目標檔案(object file),可以是可執行檔案(executable file),可以是標籤(lable))

2.prerequisites:生成target所需要的檔案或者目標

3.command:make需要執行的命令,可以是任意的shell命令

makefile核心內容:如果  所需要的檔案或者目標  比 target檔案  新的 或者target不存在的話,command將會被執行。

clean不是乙個檔案,沒有依賴的檔案,所以不會被執行,要執行後面的命令,需要make clean。

(二).例

3:3.o

gcc  -o 3  3.o

3.o:3.c  3.h

gcc  -c  3.c

clean:

rm  3.o

(三).make工作過程

在當前目錄下需找makefile或makefile|∨

找到第乙個target,作為最終目標|∨

如果target不存在或者後面依賴的檔案要比target新,執行後面的命令生成target|∨

如果target所依賴的檔案也存在,尋找生成依賴檔案的依賴檔案,根據規則生成target所依賴的檔案|∨

如果所有檔案都存在,生成target所依賴的檔案,再生產target,得到最終目標

1.找不到依賴檔案:make直接退出並報錯

2.命令錯誤或編譯不成功:make無反應

3.make只管檔案的依賴性

(四).makefile中使用的變數

宣告乙個變數:objects,objects,objs,objs,obj,obj

例:objects = 3.o

3:objects

gcc  -o 3  objects

3.o:3.c  3.h

gcc  -c  3.c

clean:

rm  objects

objects可以是objects = 1.o 2.o  3.o 

(五).讓make自動推導(隱晦規則)

例:objects = 3.o

3:objects

gcc  -o 3  objects

3.o:3.c  3.h

-----------把原來的這一行命令刪除,make自動推導出來

clean:

rm  objects

(六).另類風格的makefile

把依賴檔案和目標檔案收攏起來

例objects = main.o kbd.o command.o display.o \

insert.o search.o files.o utils.o

edit : $(objects)

cc -o edit $(objects)

main.o : defs.h

kbd.o : defs.h command.h

command.o : defs.h command.h                          

display.o : defs.h buffer.h

insert.o : defs.h buffer.h

search.o : defs.h buffer.h

files.o : defs.h buffer.h command.h

utils.o : defs.h

.phony : clean

clean :

rm edit $(objects)|∨

objects = main.o kbd.o command.o display.o \

insert.o search.o files.o utils.o

edit : $(objects)

cc -o edit $(objects)

$(objects) : defs.h

kbd.o command.o files.o : command.h

display.o insert.o search.o files.o : buffer.h

.phony : clean

clean :

rm edit $(objects)

(七).清空目標檔案的規則

一般風格:

clean:

rm edit  ¥(objects)

更穩健的做法:

.phony:clean

clean:

-rm edit ¥(objects)

來自《跟我一起寫makefile》

機器學習第一課

過擬合就是,通過訓練集進行訓練的時候,模型學習了太多的背景雜訊,讓模型的複雜度高於了真實模型 比如看到齒距型的葉子,就覺得不是葉子 欠擬合是指,模型在訓練集上進行學習的時候,效果就不是很好,沒有充分學習到其中的資訊量,複雜度低於真實模型,得到的模型泛化能力差 比如看到綠色,就覺得是葉子 模型評估指標...

python學習第一課

1.單行注釋 2.或 多行注釋運算子的型別運算子的優先順序運算子tips 參考變數型別 算術運算子 print 1 1 2,加 print 2 1 1,減 print 3 4 12,乘 print 3 4 0.75,除 print 3 4 0,整除 地板除 print 3 4 3,取餘 print ...

學習Appium第一課

腦子不用確實是會生鏽的,三年沒有去學習。我差點忘了自己曾經是計算機專業畢業的,配置個chromedrive花了半天,細思極恐。說說自己入的坑吧。簡單到不能簡單的步驟。2 將該路徑新增到系統環境變數path下 認識到這個問題後重新安裝了32位瀏覽器,沒有重啟 ps 可能出現下圖兩種問題,這是chrom...