linux下makefile的理解與簡易操作

2021-08-21 18:44:11 字數 1492 閱讀 3682

本文章參考自:

當在寫乙個大型專案時,往往會有很多的函式檔案,如果只單純的使用gcc在終端裡乙個個手動編譯怕是誰都不願意吧。

這時候就需要乙個能夠按照你設定的規則去編譯的工具—makefile。

在不是用makefile時,我們對於乙個專案的多個檔案,比如a.c,b.c,c.c,編譯方法如下

gcc  a.c  –o  a.o                    //將三個.c檔案編譯成.o檔案

gcc b.c -o b.o

gcc c.c -o c.o

gcc a.o b.o c.o –o all //將三個.o檔案編譯成乙個可執行檔案

./all //執行程式

以上例子還算檔案少,如果有幾十上百個檔案,那這樣子來編譯就不現實了。

或者說,當你修改了其中的乙個.c,那麼你需要將所有東西都再次編譯,修改多了就會讓費很多時間。

此時引入makefile

makefile:自動編譯。先將每個.c檔案的編譯過程提前寫在makefile檔案中,在執行程式時,系統直接用make命令使檔案自動編譯,提高效率。

makefile檔案的書寫格式:

vim makefile

其雛形為:

target : prerequisites 

(tab)command   //任意的shell 命令

target :要生成的目標檔案

prerequisites :生成目標檔案所需要的檔案

commed:生成目標檔案所需要執行的編譯命令

例項:

有這幾個檔案:main.c, print.c, print.h

//helloword 就是我們要生成的目標

helloworld : main.o print.o // main.o print.o是生成此目標的先決條件

gcc -o helloworld main.o print.o //shell命令,最前面的一定是乙個tab鍵

mian.o : mian.c print.h

gcc -c main.c

print.o : print.c print.h

gcc -c print.c   

clean :          

rm helloworld main.o print.o

此時,makefile檔案寫完,現在只需要在終端輸入make就可以完成makefile中指定的編譯操作

一次搞定,很舒服。

若輸入make clean就會刪除 helloworld ,main.o, print.o

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檔案

makefile是linux下的檔案管理工具,本質是檔案,載入執行需要make命令,make命令可以認為是執行shell指令碼檔案 我們建立乙個makefile檔案,注意,在linux中,m首字母大小寫不區分 呼叫vim makefile makefile內容是main的gcc的過程,要分步驟寫,和...

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...