如何在Linux系統(tǒng)中使用make命令
美國(guó)服務(wù)器租用,海外主機(jī)
在本期中,海外主機(jī)將向您介紹如何在Linux系統(tǒng)中使用make命令。文章內(nèi)容豐富,從專業(yè)角度分析敘述??赐赀@篇文章,希望你能有所收獲。
一、Make的概念
“制造”這個(gè)詞在英語(yǔ)中的意思是“制造”。Make命令直接使用這個(gè)意思,就是制作一個(gè)文件。例如,要使文件成為a.txt,可以執(zhí)行以下命令。
代碼如下:
$ make a.txt
但是,如果您真的輸入這個(gè)命令,它將不起作用。因?yàn)镸ake命令本身不知道如何制作. txt,所以需要有人告訴它如何調(diào)用其他命令來(lái)完成這個(gè)目標(biāo)。
例如,假設(shè)文件a.txt依賴于b.txt和c.txt,后者是后兩個(gè)文件連接的產(chǎn)物。然后,制定需要知道的以下規(guī)則。
代碼如下:
a.txt: b.txt c.txt
cat b.txt c.txt a.txt
也就是說(shuō)make a.txt背后的命令實(shí)際上分為兩步:第一步是確認(rèn)b.txt和c.txt一定已經(jīng)存在,第二步是使用cat命令合并這兩個(gè)文件,作為新文件輸出。
像這樣的規(guī)則被寫在一個(gè)叫做Makefile的文件中,Make命令依賴于這個(gè)文件進(jìn)行構(gòu)造。makefile也可以寫成Makefile,或者用命令行參數(shù)指定為另一個(gè)文件名。
代碼如下:
$ make -f rules.txt
#或者
$ make - file=rules.txt
上面的代碼指定make命令是根據(jù)rules.txt文件中的規(guī)則構(gòu)建的。
總之,make只是一個(gè)根據(jù)指定Shell命令進(jìn)行構(gòu)建的工具。它的規(guī)則很簡(jiǎn)單,您指定要構(gòu)建哪些文件,依賴哪些源文件,以及當(dāng)這些文件發(fā)生變化時(shí)如何重建它們。二、Makefile文件的格式
構(gòu)造規(guī)則寫在Makefile中。要學(xué)習(xí)如何制作命令,必須學(xué)習(xí)如何編寫Makefile。2.1 概述
Makefile由一系列規(guī)則組成。每個(gè)規(guī)則的形式如下。
代碼如下:
目標(biāo):先決條件
[tab]命令
上面第一行冒號(hào)前的部分叫‘目標(biāo)’,冒號(hào)后的部分叫‘前提條件’;第二行必須以制表符開(kāi)頭,后跟“commands”。
“目標(biāo)”是必需的,不能省略;先決條件和命令是可選的,但它們中至少有一個(gè)必須存在。
每條規(guī)則定義了兩件事:建立目標(biāo)的先決條件是什么以及如何建立目標(biāo)。以下是對(duì)每個(gè)規(guī)則的這三個(gè)組成部分的詳細(xì)解釋。2.2 目標(biāo)(target)
目標(biāo)構(gòu)成規(guī)則。目標(biāo)通常是一個(gè)文件名,表示由Make命令構(gòu)建的對(duì)象,如上面的. txt。目標(biāo)可以是一個(gè)文件名或多個(gè)由空格分隔的文件名。
除了文件名之外,目標(biāo)也可以是一個(gè)操作的名稱,稱為“假目標(biāo)”。
代碼如下:
clean:
rm *。o
上面代碼的目標(biāo)是干凈的,不是文件名,而是一個(gè)操作的名字,屬于‘偽目標(biāo)’,用來(lái)刪除對(duì)象文件。
代碼如下:
$清理
但是,如果當(dāng)前目錄中恰好有一個(gè)名為clean的文件,則不會(huì)執(zhí)行該命令。Make發(fā)現(xiàn)干凈文件已經(jīng)存在,所以它認(rèn)為沒(méi)有必要重建它,所以它不會(huì)執(zhí)行指定的rm命令。
為了避免這種情況,clean可以顯式地
Tags:美國(guó)服務(wù)器租用,海外主機(jī),如何在Linux系統(tǒng)中使用make命令
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信