linux的make命令
linux的make命令
Linux系統(tǒng)下編譯時利用make命令可以很好地減少不必要的編譯工作,提高效率,下面由學(xué)習(xí)啦小編為大家整理了linux的make命令的相關(guān)知識,希望大家喜歡!
linux的make命令詳解
1.功能說明
make命令的關(guān)鍵是找出上一次各個文件的修改時間,利用此修改時間來比較相依 賴文件最后一次修改的時間。若目標(biāo)文件的修改時間早于其相依文件的修 改時間,則必須先對相依文件進(jìn)行處理(編譯),進(jìn)而來更新目標(biāo)文件,若目標(biāo)文件的修改時間遲于其相依文件的修改時間,則不對該相依文件進(jìn)行處理(編譯)。 利用它可以每次只編譯自上次編譯后發(fā)生變化的文件,從而可以減少一些不必要的編譯工作,提高效率。
執(zhí)行make命令所需要的信息:
(1)用戶定義的描述文件,一般為makefile
(2)文件系統(tǒng)有關(guān)的數(shù)據(jù)和與時間有關(guān)的信息
(3)一組后綴規(guī)則
2.makefile文件
Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動維護(hù)編譯工作。而makefile 文件需要按照某種語法進(jìn)行編寫,文件中需要說明如何編譯各個源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。
Makefile文件作為一種描述文檔一般需要包含以下內(nèi)容:
(1) 宏定義
(2) 源文件之間的相互依賴關(guān)系
(3) 在依賴關(guān)系基礎(chǔ)上的可執(zhí)行的命令序列
3.make命令
make命令的一般格式:
make【選項】【make描述文件】【宏定義】【目的文件】
make首先分析所有的宏定義參數(shù)(帶嵌入等號的參數(shù))并進(jìn)行賦值,宏命令行覆蓋在makefile中進(jìn)行的定義,然后檢驗(yàn)選項標(biāo)志,最后遞歸的對每一個目的依賴文件進(jìn)行檢查。
unix下常用的選項如下:
f file 指定file文件為描述文件,如果file參數(shù)為"-"符,那么描述文件指向標(biāo)準(zhǔn)輸入。如果沒有"-f"參數(shù),則系統(tǒng)將默認(rèn)當(dāng)前目錄下名為makefile或者名為Makefile的文件為描述文件。在Linux中, GNU make工具在當(dāng)前工作目錄中按照GNUmakefile、makefile、Makefile的順序搜索 makefile文件。
-i 忽略命令執(zhí)行返回的出錯信息。
-s 沉默模式,在執(zhí)行之前不輸出相應(yīng)的命令行信息。
-r 禁止使用build-in規(guī)則。
-n 非執(zhí)行模式,輸出所有執(zhí)行命令,但并不執(zhí)行。
-t 更新目標(biāo)文件。
-q make操作將根據(jù)目標(biāo)文件是否已經(jīng)更新返回"0"或非"0"的狀態(tài)信息。
-p 輸出所有宏定義和目標(biāo)文件描述。
-d Debug模式,輸出有關(guān)文件和檢測時間的詳細(xì)信息。
Linux下常用選項與Unix系統(tǒng)中稍有不同,下面是不同的部分:
-c dir 在讀取 makefile 之前改變到指定的目錄dir。
-I dir 當(dāng)包含其他 makefile文件時,利用該選項指定搜索目錄。
-h help文擋,顯示所有的make選項。
-w 在處理 makefile 之前和之后,都顯示工作目錄。
linux的make命令實(shí)例解析
1.make -j 18 :表示同時使用18個線程進(jìn)行編譯。該數(shù)字建議小于或者等于CPU的個數(shù)。