1. makefile格式
target:dependency_files
command //即make需要執行的命令
vi乙個makefile檔案,用make執行,make預設執行第乙個檔案,也可以make f1.c其中乙個c檔案。就是將.c檔案生成.o目標 檔案,上面一句是說明目標檔案的依賴,下面是執行語句,最終make執行命令。
2.makefile一些理論知識
把原始碼生成
.o檔案叫編譯
把大量的
.o檔案生成可執行檔案叫鏈結。鏈結時主要鏈結的是函式和全域性變數。
總結一下,原始檔首先會生成中間目標檔案,再由中間目標檔案生成執行檔案。在編譯時,編譯器只檢測程式語法,和函式、變數是否被宣告。如果函式未被宣告,編譯器會給出乙個警告,但可以生成
object file
。而在鏈結程式時,鏈結器會在所有的
object file
中找尋函式的實現,如果找不到,那到就會報鏈結錯誤碼(
linker error
),在vc
下,這種錯誤一般是:
link 2001
錯誤,意思說是說,鏈結器未能找到函式的實現。你需要指定函式的
object file.
在這個makefile
中,目標檔案(
target
)包含:執行檔案
edit
和中間目標檔案(
*.o),依賴檔案(
prerequisites
)就是冒號後面的那些
.c 檔案和
.h檔案。每乙個
.o 檔案都有一組依賴檔案,而這些
.o 檔案又是執行檔案
edit
的依賴檔案。依賴關係的實質上就是說明了目標檔案是由哪些檔案生成的,換言之,目標檔案是哪些檔案更新的。在定義好依賴關係後,後續的那一行定義了如何生成目標檔案的作業系統命令,一定要以乙個tab鍵作為開頭。記住,make並不管命令是怎麼工作的,他只管執行所定義的命令。
3.makefile常用的一些引數
make –f makefile.debug//-f是將後面的檔案當作makefile來執行
make –i
忽略所有錯誤命令繼續執行完,很重要
例子:hello.o :hello.c hello.h
gcc –chello.c –o hello.o
gcc -wall:warning顯示出來
-o file:表示把檔案輸出到file裡
-n :只列印要執行的命令,但不執行這些命令
-s:在執行命令時不顯示命令
-i include在資料夾中搜尋
-c $@ :進入所有的子目錄中
make
的隱含規則,當執行檔案存在時,file.o
的目標的依賴會自動推導為file.c,並生成執行命令,可以大大簡化make的編寫。
vpath
:虛路徑,在當前目錄找不到原始檔時,就會去其他目錄尋找,如:vpath = src1 src2 main
find ./-name 「*.o」//
找到當前目錄下所有.o的檔案
find ./-name 「*.o」exec rm {} \ //把找到的檔案刪除
$^:獲取所有依賴檔案
$@:獲取所有目標檔案
$<:獲取第乙個依賴檔案
$?:表示比目標還要新的依賴檔案列表
makefile的巢狀使用(常用)
@echo$():輸出,且不顯示輸出命令
exportcc objs //讓子makefile可以使用定義的自變數
用到自己的標頭檔案時用「」而不是
clean的用法:
.phony:clean //防止某個檔案和clean重名
clean:*.o test //刪除所有的中間檔案和執行檔案
makefile簡明使用方法
命令前面加乙個減號的意思是,該命令如果出錯也不停止 命令前面加 的意思是,這個命令將不顯示出來 makefile中的變數其實就是c語言中的巨集 定義的變數不能使用後面定義的變數 定義的變數可以使用後面的變數 是追加 例如,a 5 b c 5 b b mb是5m,c是5 vpath變數 make會在當...
makefile的基本使用方法
makefile的基本使用方法 有三個檔案,file1.c file2.c file3.h,第乙個檔案呼叫第二個檔案的函式,第三個檔案為標頭檔案,其makefile為 gobbin file1.o file2.o gobbin為程式名稱,依賴於file1.o file2.o兩個目標檔案 gcc fi...
pythonpip使用方法 pip使用方法整理
匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...