什么是makefile?為什么需要用makefile?
正常編譯一個c文件,直接敲命令:
gcc hello.c -o hello就行。
如果文件稍微多幾個,gcc 里面多加幾個問題也不大。
但是如果給你一個完整的項目工程,里面包含幾千甚至幾萬個文件,而且又分成不同的文件夾,再去敲命令一個一個編譯,顯然有點不現實。
細心的同學會發現,凡是這些工程項目,里面都會有個叫Makefile的文件,要么這個文件直接存在,要么可以通過某種方式生成。
Makefile就是工程管理器,里面指定了本項目的編譯規則。
先編譯哪些,再編譯哪些,要鏈接哪些庫等等。
簡單的Makefile確實挺簡單,但是復雜的Makefile也很復雜。
下面來寫個簡單的Makefile。 假設現在只有一個源文件 hello.c。
root@turbo:~# ls hello.c root@turbo:~#打開Makefile,先寫目標文件,就是最終要生成的二進制,冒號后面寫上依賴文件,就是通過哪個文件可以生成目標文件。
hello:hello.c另起一行,先敲一下tab鍵,然后寫編譯的規則,就是我們平時敲的命令。
hello:hello.c gcc hello.c -o hello執行Makefile,只要敲make就行,然后就能順利編譯。
make再把文件增加兩個。
Makefile中,目標文件不變,依賴文件以及下面編譯規則都要增加兩個文件。
這樣確實麻煩了些。
Makefile里面也有變量一說,引用變量的時候,用 $ 符號。
有了變量,下次再增加什么文件,只要往后接就行。
Target=hello Object=hello.cprint.c show.c $(Target):$(Object) gcc $(Object) -o $(Target)不過一般依賴文件也不寫成 .c ,因為最終的可執行文件都是由匯編后的文件合成,也就是多個 .o 文件經過鏈接變成了可執行文件,所以這里一般寫成 .o 。
Target=hello Object=hello.oprint.oshow.o $(Target):$(Object) gcc $(Object) -o $(Target)那 .o 文件又怎么來,下面可以繼續寫由 .c 生成 .o ,不過Makefile里面有隱含規則,所以這幾行可以不寫。
make的時候,過程很清晰,先從.c 變成 .o 再把 .o 合成最終的可執行文件。
root@turbo:~# make cc -c -o hello.o hello.c cc -c -o print.o print.c cc -c -o show.o show.c gcc hello.o print.o show.o -o hello root@turbo:~#
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
二進制
+關注
關注
2文章
793瀏覽量
41599 -
Makefile
+關注
關注
1文章
125瀏覽量
19161
原文標題:如何寫一個簡單的Makefile
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
教你寫Makefile
教你寫Makefile
什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,
發表于 02-10 14:24
?37次下載
駕馭Makefile
到項目中,需要的知識是線、甚至是面。這篇文章以helloworld作為開篇,接著是simple項目、complicated項目以及huge項目,一步一步的引入了Makefile中的概念,以及告訴你做一個實
發表于 01-05 17:05
?9次下載
linux makefile教程
什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile
發表于 11-12 09:11
?5296次閱讀
makefile的基本語法
在Makefile中,最重要的三個概念是:目標(target)、依賴關系(dependency)和命令(command)。目標是指要干什么,即運行make后生成什么;依賴是指明目標所依賴的其他目標;命令則告訴make如何生成目標,這三個概念是通過Makefile中的規則
發表于 11-12 10:15
?1.1w次閱讀
windows平臺下makefile操作教程
Makefile一個工程中的源文件不計其數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件
發表于 11-24 17:14
?1.1w次閱讀
Makefile是什么?Makefile工作原理是怎樣的?Makefile經典教程免費下載
Makefile的重要性
會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力
makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make
發表于 09-12 17:19
?0次下載
嵌入式中的Makefile應用
文章目錄一.Makefile 引入二. Makefile語法1.通配符2.假象目標3.變量三.Makefile函數四.實例本文主要總結一下嵌入式開發中的Makefile,一般項目中都
發表于 11-03 17:06
?11次下載
【Makefile】Makefile與shell命令的聯系
博主最近在項目實踐過程中,需要深度定制項目的Makefile,其中有些復雜的流程必須得借助shell腳本才能高效地完成,為此博主特意深入學習了在Makefile種調用shell命令的方法。
Makefile可以做什么?Makefile的基本格式
Makefile可以根據指定的依賴規則和文件是否有修改來執行命令。常用來編譯軟件源代碼,只需要重新編譯修改過的文件,使得編譯速度大大加快。
評論