国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile

這篇具有很好參考價(jià)值的文章主要介紹了Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言:
本章主要內(nèi)容有認(rèn)識(shí)與學(xué)習(xí)Linux環(huán)境下如何使用項(xiàng)目自動(dòng)化構(gòu)建工具——make/makefile。

一.make與Makefile的關(guān)系

當(dāng)我們編寫一個(gè)較大的軟件項(xiàng)目時(shí),通常需要將多個(gè)源文件編譯成可執(zhí)行程序或庫文件。為了簡化這個(gè)過程,我們可以使用 make 工具和 Makefile 文件。Makefile 文件可以幫助我們自動(dòng)化構(gòu)建和管理軟件項(xiàng)目,從而提高效率和可靠性。它還可以跨平臺(tái)使用,因?yàn)?make 工具可以在各種不同的操作系統(tǒng)和編譯器上運(yùn)行。

1.Makefile

Makefile 文件包含了一系列規(guī)則,每個(gè)規(guī)則描述了如何從源文件生成目標(biāo)文件。在每個(gè)規(guī)則中,我們定義了目標(biāo)文件和其依賴關(guān)系,并且指定了需要執(zhí)行的命令。

示例:

創(chuàng)建一個(gè)新文件 Makefile:

touch Makefile

編輯 Makefile 文件:

//vim進(jìn)行編輯
vim Makefile
//寫入內(nèi)容
Test : Test.c
    gcc Test.c -o Test
//保存退出

這樣就寫好了一個(gè)Makefile文件 了,那么這樣寫有什么含義呢?

其實(shí)每個(gè) Makefile 文件存在的意義就是生成一個(gè)最終目標(biāo)文件,而 Makefile 文件里最開始的文件就被認(rèn)定為是最終目標(biāo)文件(示例中的Test文件)。

示例中,要想生成目標(biāo)文件 Test ,我們需要通過 Test.c 文件經(jīng)過編譯后生成目標(biāo)文件 Test。所以Test.cTest 產(chǎn)生了依賴關(guān)系,用表示。而接下來的 gcc Test.c -o Test這條指令就是解釋目標(biāo)文件 Test 需要和 test.c 產(chǎn)生怎樣的關(guān)系。

當(dāng)然依賴關(guān)系有時(shí)候也可以不存在。因?yàn)?code> make 的目的是產(chǎn)生目標(biāo)文件,不用管通過什么手段,也不管有沒有目標(biāo)文件,例如:

//沒有依賴關(guān)系的示例
Test : 
    touch Test

有的時(shí)候,一個(gè)依賴關(guān)系可能不足以生成最終目標(biāo)文件,此時(shí)我們還需建立多層依賴關(guān)系,例如:

Test : test.o
   gcc test.o -o Test 
test.o : test.s
   gcc -c test.s -o test.o
test.s : test.i
   gcc -S test.i -o test.s
test.i : Test.c
   gcc -E Test.c -o test.i 

為了生成最終的目標(biāo)文件Test,系統(tǒng)會(huì)根據(jù)依賴關(guān)系一層一層的尋找下去。如上例,要生成Test,就得找到 test.o,要生成 test.o 就要生成 test.s…,在這樣一層一層的尋找的時(shí)候,如果有哪個(gè)過程中出現(xiàn)了斷層(生成目標(biāo)文件失?。?,則會(huì)出現(xiàn)報(bào)錯(cuò)。

上個(gè)示例結(jié)果如下,make 指令執(zhí)行 Makefile 后,不僅最終目標(biāo)文件生成了,過程中的目標(biāo)文件也都會(huì)生成:

Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile,Linux從入門到入墳,linux,c++
明白了Makefile是什么之后,再來看一看make指令。

2.make

make是一條指令,它與Makefile相伴相生。

當(dāng)我們執(zhí)行 make 指令時(shí),make 工具會(huì)讀取 Makefile 文件,并根據(jù)其中的規(guī)則來生成目標(biāo)文件。它會(huì)檢查每個(gè)規(guī)則中的依賴關(guān)系和目標(biāo)文件的最新修改時(shí)間,從而決定哪些規(guī)則需要執(zhí)行。

通俗講就是,系統(tǒng)為了效率,并不會(huì)對(duì)已經(jīng)生成的目標(biāo)文件或未曾改動(dòng)的目標(biāo)文件再作復(fù)雜的編譯并重新生成。

它會(huì)檢查源文件與可執(zhí)行文件最近修改時(shí)間的新舊,判斷是否進(jìn)行編譯。

當(dāng)我們只輸入 make 指令時(shí),它會(huì)默認(rèn)最終目標(biāo)文件。倘若我們只是想生成過程中的某一個(gè)目標(biāo)文件,則需要指定該文件名。例如:只需生成 test.o 即可:

Test : test.o
   gcc test.o -o Test 
test.o : test.s
   gcc -c test.s -o test.o
test.s : test.i
   gcc -S test.i -o test.s
test.i : Test.c
   gcc -E Test.c -o test.i 
make test.o

Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile,Linux從入門到入墳,linux,c++

二.項(xiàng)目清理

1.clean

Makefile 中,一般還會(huì)加入一個(gè)目標(biāo)文件 clean 且用 .PHONY 修飾 ,其作用是清理生成項(xiàng)目文件。例如:

Test : test.o
    gcc test.o -o Test 
test.o : test.s
    gcc -c test.s -o test.o
test.s : test.i
    gcc -S test.i -o test.s
test.i : Test.c
    gcc -E Test.c -o test.i
        
.PHONY : clean 
clean : 
    rm -f Test test.i test.s test.o  

2. .PHONY

.PHONY 修飾的目標(biāo)文件意為 總是被執(zhí)行的。例如,我們執(zhí)行 make test.o 命令后,可以執(zhí)行,但是第二次卻不行了,因?yàn)樵撃繕?biāo)文件已經(jīng)存在且為最新。但是被.PHONY飾后可以一直被執(zhí)行。

Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile,Linux從入門到入墳,linux,c++


本文到此結(jié)束,碼文不易,還請(qǐng)多多支持哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-533942.html

到了這里,關(guān)于Linux:項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/makefile

    【Linux】Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/makefile

    ??博客主頁:小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:Linux入門到精通 ??代碼倉庫:小智的代碼倉庫 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需

    2024年02月12日
    瀏覽(17)
  • 【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile及拓展

    【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile及拓展

    1、背景知識(shí) 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作 makefile帶來的好處就是——“自動(dòng)化編譯”,一旦

    2023年04月27日
    瀏覽(23)
  • 【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile

    【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile

    ? ? ? ? 大家好,好久不見!今天小獅子為大家?guī)淼奈恼率且黄P(guān)于Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile的博客,希望能幫助到大家。 ? ? ? ? 當(dāng)我們進(jìn)行涉及多文件的工程開發(fā)時(shí),我們需要對(duì)很多不同類型、不同功能,存在于不同目錄下的源文件進(jìn)行編譯操作,

    2024年02月13日
    瀏覽(35)
  • Linux工具【2】(調(diào)試器gdb、項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile)

    Linux工具【2】(調(diào)試器gdb、項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile)

    在上一篇文章中介紹了Linux中的編輯器vim與編譯器gcc與g++: 戳我看vim與gcc詳解哦 在本篇文章中將繼續(xù)來介紹Linux中的工具: 調(diào)試器gdb與項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile 在Windows環(huán)境中,我們使用vs時(shí),常常會(huì)逐過程與逐語句地調(diào)試代碼以更高效地尋找到錯(cuò)誤的位置。在Linux中也

    2024年02月12日
    瀏覽(24)
  • Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile以及git三板斧

    Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile以及git三板斧

    是否會(huì)寫make/makefile,從側(cè)面反映了一個(gè)程序員是否具備完成大型工程的能力。一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更

    2024年02月16日
    瀏覽(27)
  • 【Linux】Linux編譯器-gcc/g++ && Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    【Linux】Linux編譯器-gcc/g++ && Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    目錄 Linux編譯器-gcc/g++使用 1.背景知識(shí) ?Linux中頭文件的目錄在 Linux 庫 條件編譯的典型應(yīng)用 2.gcc如何完成 動(dòng)態(tài)庫 vs 靜態(tài)庫 debug release Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 背景 用法 特殊符號(hào)? 預(yù)處理(去注釋,頭文件展開,條件編譯,宏替換) 編譯(生成匯編) 匯編(生成

    2024年02月20日
    瀏覽(33)
  • 【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make和Makefile 的使用和進(jìn)度條的實(shí)現(xiàn)

    【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make和Makefile 的使用和進(jìn)度條的實(shí)現(xiàn)

    什么是makefile 在我們以后的工作環(huán)境中,一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作 Linux中提供了自動(dòng)化

    2024年02月07日
    瀏覽(18)
  • 【Linux】:Linux項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile || Linux第一個(gè)小程序——進(jìn)度條(簡單版本)

    【Linux】:Linux項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile || Linux第一個(gè)小程序——進(jìn)度條(簡單版本)

    在本章開始給大家分享一個(gè)圖片 希望對(duì)你有幫助 在這里插入圖片描述 在開始本章之前 我們需要回顧一下上節(jié)課的函數(shù)的動(dòng)靜態(tài)庫的優(yōu)缺點(diǎn) 動(dòng)態(tài)庫的優(yōu)點(diǎn): 比較節(jié)省資源(這里說的資源不僅僅是磁盤資源 也包括網(wǎng)絡(luò)資源 內(nèi)存資源等等),不會(huì)出現(xiàn)太多的重復(fù)代碼 缺點(diǎn):對(duì)

    2024年02月05日
    瀏覽(39)
  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.6(調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.6(調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile)

    前面我們講了C語言的基礎(chǔ)知識(shí),也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的一些知識(shí),也學(xué)習(xí)了一些Linux的基本操作,也了解并學(xué)習(xí)了有關(guān)Linux開發(fā)工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代碼也相信大家都掌握的不錯(cuò),今天博主帶大家了解一下 —— Linux系統(tǒng)下的調(diào)試

    2024年02月12日
    瀏覽(25)
  • 【Linux】--- Linux編譯器-gcc/g++、調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 使用

    【Linux】--- Linux編譯器-gcc/g++、調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 使用

    格式: gcc [選項(xiàng)] 要編譯的文件 [選項(xiàng)] [目標(biāo)文件] , gcc / g++ 安裝: sudo yum install -y gcc-c++ 。安裝后的編譯器默認(rèn)的版本是較低的,我們可以 使用選項(xiàng) -std=c99 (即使用c99標(biāo)準(zhǔn)), -std=c++11 (即使用c++11的標(biāo)準(zhǔn))來進(jìn)行版本提升 。使用 -o 選項(xiàng),可以將編譯生成的可執(zhí)行重命名

    2024年03月10日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包