Linux下的MakeFile檔案

2021-09-19 16:37:45 字數 1642 閱讀 7160

makefile是linux下的檔案管理工具,本質是檔案,載入執行需要make命令,make命令可以認為是執行shell指令碼檔案

我們建立乙個makefile檔案,注意,在linux中,m首字母大小寫不區分——呼叫vim makefile

makefile內容是main的gcc的過程,要分步驟寫,和shell指令碼檔案把檔案編譯過程記錄下來,會根據最後修改的檔案來智慧型決定需要編譯哪些檔案

假設要編譯gcc –o gcc -o server server.o file.o(後面兩個是依賴檔案)

那麼makefile檔案中以鏈結過程為第一行,羅列出server需要的.o檔案,第二行用tab鍵縮排,寫出gcc 鏈結**

下來就是列舉依賴檔案的編譯指令,格式和第一行相同(也可省略,用系統預設的cc編譯)也可以只留下識別符號+: 等同於乙個變數

最後是相關操作,寫在clean:下,例如rm *.o server,可以用變數替換 ,使用時$(val)即可

server:server.o file.o

gcc -o server server.o file.o

server.o:server.cpp

gcc -c server.cpp

file.o:flie.cpp

gcc -c client.cpp

clean:

rm *.o server

如果省略依賴引數的編譯過程,則需要讓系統去推演生成依賴引數,在linux之中預設的編譯方式是gcc

可以使用變數來接受引數列表,引數的型別都是string型別,比如說val = server.o file.o,使用val的方法是$(val),每次有更新只要修改val即可,其他的可以用不用管,因為這樣呼叫val的地方修改都會被應用。

簡化後的版本:

rm *.o server其中,vpth是指定環境變數,如果在預設的環境沒找到則會去vpth指定的路徑去找,再提幾點:

vpath命令 %.c dir 在dir目錄下找所有.c檔案,一般預設在本目錄下查詢

make本身是執行檔案 也可以用make –f 指定檔案生成

makefile的注釋和shell相同為#號,寫在clean下的操作在bash介面是輸入命令make clean可以執行,其他情況直接執行make即可。

makefile會自動推演是否需要再次生成檔案,當你呼叫了make後,系統會先檢視你無主檔案或者依賴檔案的更新時間比主檔案更新,則判斷需要重新生成,對每個依賴檔案都會這樣判斷,依次生成.o檔案,最後進行編譯。

可以說makefile大大提高了開發效率,只要gcc過程正確,那麼大工程中一次性做完所有編譯連線過程就不再是不可能事。

linux下的makefile程式設計

程式1 mytool1.c include mytool1.h include stdio.h void mytool1 print char print str 程式2 mytool1.h ifndef mytool 1 h define mytool 1 h void mytool1 print...

linux 下makefile的使用舉例

該程式在linux平台下用c語言實現 有兩個標頭檔案m1.h m2.h 對應的實現檔案m1.c m2.c 除錯檔案test.c 案例 如下 m1.h includevoid m1 print char str m2.h includevoid m2 print char str m1.c inclu...

linux下的Makefile詳解(5)

使用條件判斷 使用條件判斷,可以讓make根據執行時的不同情況選擇不同的執行分支。條件表示式可以是比較變數的值,或是比較變數和常量的值。一 示例 下面的例子,判斷 cc 變數是否 gcc 如果是的話,則使用gnu函式編譯目標。libs for gcc lgnu normal libs foo obj...