本文章參考自:
當在寫乙個大型專案時,往往會有很多的函式檔案,如果只單純的使用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...