国产 无码 综合区,色欲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)違法"按鈕提交疑問。

前言:

在上一期的博文中,我們對(duì) Linux 下的編譯器 -?gcc/g++的使用進(jìn)行了詳細(xì)的講解,今天我將給大家講解的是關(guān)于?【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具 —— make/Makefile? 的詳細(xì)使用教程?。?/p>

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


本文目錄

(一)前情摘要

(二)背景介紹

1、Makefile 的基本認(rèn)識(shí)

2、make 的基本認(rèn)識(shí)

3、代碼實(shí)現(xiàn)

(三)依賴關(guān)系與依賴方法

1、基本概念

?2、深入理解

(四)項(xiàng)目清理

1、代碼演示

2、.PHONY原理

(五)三個(gè)時(shí)間

1、make的判斷機(jī)制

(六)總結(jié)


(一)前情摘要

在上一期我們將 Linux編譯器-gcc/g++使用 的使用的時(shí)候,我們通過對(duì) C語言翻譯的逐過程講解知道了可執(zhí)行程序 【a.out】的來歷。

整體過程大概劃分為以下幾個(gè)步奏:???

  • 第一步,就是進(jìn)行預(yù)處理:文件從【test.c】經(jīng)過預(yù)編譯最終形成【test.i
  • 第二步,經(jīng)過預(yù)處理之后,文件從【test.i】經(jīng)過編譯最終形成?【test.s
  • 第三步,經(jīng)過編譯之后,文件從【test.s】經(jīng)過匯編最終形成?【test.o
  • 第四步,經(jīng)過匯編之后,文件從【test.o】經(jīng)過鏈接最終形成?【a.out

?????以上經(jīng)過編譯 加上鏈接的過程,大家有沒有覺得看著十分的復(fù)雜,對(duì)于學(xué)習(xí)初期拿來練練手了解一下原理還可以,但是若有一天大家到公司中,面對(duì)那些大型的工程項(xiàng)目,輕則成千上萬行代碼,重則十幾萬甚至更多。

?????若是一次編譯完成之后又修改了源代碼,接著又想進(jìn)行編譯,此時(shí)便需要重新敲入指令,那會(huì)使得工作量變得很大,還顯得十分的低效。

因此,基于上述原因,我們就誕生出了本期將要介紹的 ——> 【make/Makefile】

  • 利用 make工具,我們可以將大型的開發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,對(duì)于一個(gè)包括幾百個(gè)源文件的應(yīng)用程序,使用 make 和??makefile?工具可以十分簡單的整理好各個(gè)源文件之間的關(guān)系。

?? 優(yōu)勢(shì):

  1. 包含多個(gè)源文件的項(xiàng)目工程在編譯時(shí)有很多復(fù)雜且指令較長的命令行,這時(shí)我們可以通過makefile 保存這些命令行來簡化該工作;
  2. 其次,make 也可以減少重新編譯所需要的時(shí)間,因?yàn)?make 可以精準(zhǔn)的識(shí)別出項(xiàng)目中的文件有哪些是經(jīng)過修改變化的;
  3. make 維護(hù)了當(dāng)前項(xiàng)目中各文件的相關(guān)關(guān)系,從而可以在編譯前檢查是否可以找到所有的文件

接下來,我們就對(duì)?【make/Makefile】 進(jìn)行詳細(xì)的講解?。?!


(二)背景介紹

在正式應(yīng)用之前,我們先對(duì)這兩個(gè)進(jìn)行概念上的理解?。?!

1、Makefile 的基本認(rèn)識(shí)

定義:

  • MakeFile 是一個(gè)GNU推出的?編譯開發(fā)工具,能為一些編譯過程提供服務(wù)。
  • Makefile 的本質(zhì)其實(shí)是一個(gè)文件。它是一個(gè)工程文件的編譯規(guī)則,它記錄了原始信息如何編譯的詳細(xì)信息、描述了整個(gè)工程的編譯鏈接等規(guī)則。

功能:

  • 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的 規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜 的功能操作;
  • 舉個(gè)例子,我們上述提到的文件翻譯過程形成的那么多的文件,怎么把他們編譯成最后能夠執(zhí)行的可執(zhí)行程序呢?
  • 我們就可以用 MakeFile 來輔助你編譯,用了MakeFile除了能提升效率,還能避免人為操作導(dǎo)致錯(cuò)誤。

makefile基于兩個(gè)重要關(guān)系:

  • 依賴關(guān)系:定義了如果你想要建立一個(gè)項(xiàng)目或者目標(biāo),有什么是必須要做的;
  • 時(shí)間關(guān)系:根據(jù)文件的屬性時(shí)間。make 程序判斷哪些文件在項(xiàng)目過程中發(fā)生了修改。然后根據(jù)上述的依賴關(guān)系,把依賴于這些修改文件的目標(biāo)文件重新確立一份關(guān)系。
 

緊接著我們來看一下【MakeFile】的語法介紹:

<target1 > <target2>.... : <prerequisites1> <prerequisites2>...
[TAB] <command1>
[TAB] <command2>
...

命令解析:

  1. 【target】:可以是一個(gè)object file(目標(biāo)文件),也可以是一個(gè)執(zhí)行文件,還可以是一個(gè)標(biāo)簽(label);
  2. <prerequisites>:就是要生成的那個(gè)?target 所需要的文件或者目標(biāo);
  3. <command>:也就是 make 需要執(zhí)行的命令;

很明顯我們可以發(fā)現(xiàn)這是一個(gè)文件的依賴關(guān)系,<target>?這一個(gè)或多個(gè)的目標(biāo)文件依賴于<prerequisites>?中的文件,其生成規(guī)則定義在?<command>中。

說白一點(diǎn)就是說,<prerequisites>中如果有一個(gè)以上的文件比<target>文件要新的話,<command>所定義的命令就會(huì)被執(zhí)行。這就是makefile的規(guī)則。也就是makefile中最核心的內(nèi)容。

小結(jié):

  • makefile帶來的好處就是——“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編 譯,極大的提高了軟件開發(fā)的效率。因此,會(huì)不會(huì)寫 makefile,從一個(gè)側(cè)面說明了一個(gè)人是否具備完成大型工程的能力

2、make 的基本認(rèn)識(shí)

定義:

  • make是一個(gè) 命令工具,是一個(gè)解釋 makefile 中指令的命令工具,一般來說,大多數(shù)的IDE都有這個(gè)命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make??梢姡琺akefile都成為了一 種在工程方面的編譯方法。

3、代碼實(shí)現(xiàn)

?有了以上概念的了解,接下來我們就手動(dòng)的去實(shí)現(xiàn)一下這兩個(gè)基本工具:

  • 第一步:上述我們可以知道 make 命令是用來解釋 Makefile 中指令的,所以我們需要?jiǎng)?chuàng)建一個(gè)文件進(jìn)行編輯,具體如下;

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

  • ?第二步:我們?cè)賱?chuàng)建一個(gè)【myfile.c】的文件,作為源文件,然后開始往里面寫內(nèi)容

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

  • ?第三步:回到命令行,我們執(zhí)行一下make指令,它就是自動(dòng)在當(dāng)前源文件的所在路徑下搜尋Makefile,并解釋里面命令,最后生成myfile

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

  • ?第四步:此時(shí)當(dāng)我們想刪除應(yīng)該怎么辦呢?還是跟之前一樣一條條的去【rm】嗎?答案是不用,此時(shí)我們?cè)凇綧akefile】中在寫入一段即可幫助我們完成這項(xiàng)工作:

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

綜上所述:make是一條命令,makefile 是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動(dòng)化構(gòu)建。


(三)依賴關(guān)系與依賴方法

在上述我們講【Makefile】時(shí),我提到過關(guān)于依賴關(guān)系這個(gè)話題,可能許多小伙伴就是滿頭霧水,什么是依賴關(guān)系呢?依賴關(guān)系在這里怎么體會(huì)的呢?接下來,我們就在仔細(xì)講講這個(gè) “依賴關(guān)系”

1、基本概念

在上述我編寫的 【Makefile】文件中,對(duì)于?myfile : myfile.c?

  • 對(duì)于冒號(hào)左側(cè):我們看做是目標(biāo)文件;
  • 對(duì)于冒號(hào)右側(cè):我們可以看做是它的依賴文件;

因此我們就可以說它們之間存在一種【依賴關(guān)系】只有【myfile.c】存在才有【myfile】

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


?2、深入理解

上述,我們?cè)凇綧akefile】中寫入的是可以直接對(duì)文件進(jìn)行編譯,按照上節(jié)課我們所講的在代碼翻譯為可執(zhí)行程序的期間,經(jīng)歷好幾個(gè)過程。

  • 因此,接下來我們?cè)谕ㄟ^對(duì)其代碼翻譯的幾個(gè)過程來深入理解——》【依賴關(guān)系和依賴方法】

因?yàn)榭蓤?zhí)行文件【myfile】是依賴于匯編后形成的目標(biāo)文件 【myfile.o】,但是現(xiàn)在我們并沒有這個(gè)文件,因此就要去倒推一下如何獲取這個(gè)?【myfile.o】

  • ???對(duì)于【myfile.o】來說,它依賴于myfile.s這個(gè)經(jīng)過編譯之后文件,可是myfile.s此時(shí)也不不存在,所以跳轉(zhuǎn)到下一條依賴關(guān)系
 myfile.o:myfile.s
    gcc -c -o myfile.o myfile.s

  • ???對(duì)于【myfile.s】來說,它依賴于myfile.i這個(gè)經(jīng)過編譯之后文件,可是myfile.i此時(shí)也不不存在,所以跳轉(zhuǎn)到下一條依賴關(guān)系
myfile.s:myfile.i
     gcc -S -o myfile.s myfile.i
  • ???對(duì)于【myfile.i】來說,它依賴于myfile.c這個(gè)經(jīng)過編譯之后文件,此時(shí)源文件存在,執(zhí)行g(shù)cc指令
myfile.i:myfile.c
     gcc -E -o myfile.i myfile.c

修改后如下圖所示:

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

  • ???最后,我們回到命令行,直接輸入【make】指令即可完成所有的工作

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

?小結(jié):

  • 【依賴關(guān)系】中,若是目標(biāo)文件所依賴的文件不存在,就將這個(gè)【依賴方法】放入棧中,緊接著轉(zhuǎn)到下一組 【依賴關(guān)系】,以此類推,直到找到當(dāng)前目標(biāo)文件所依賴的文件,此時(shí)就進(jìn)行出棧操作,開始執(zhí)行?【依賴方法】,最后獲取得到的便是我們最初的目標(biāo)文件?。?!

(四)項(xiàng)目清理

1、代碼演示

在上面的內(nèi)容中我們已經(jīng)對(duì)這個(gè)知識(shí)點(diǎn)進(jìn)行應(yīng)用了,這里我們?cè)谠敿?xì)的展開說說

  • 當(dāng)我們的【Makefile】文件中寫入 刪除【myfile】時(shí),此時(shí)我們返回命令行,緊接著再去執(zhí)行一下【make clean】之后,我們可以發(fā)現(xiàn)目錄下的【myfile】文件已經(jīng)被刪除了

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

  • ?當(dāng)我們想刪除代碼翻譯過程的形成的文件時(shí),一樣的,我們可以這樣去做:
  • .PHONY:clean
       clean:
       rm -f myfile.i myfile.s myfile.o myfile   

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

  • 像clean這種,沒有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會(huì)被自動(dòng)執(zhí)行, 不過,我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來清除所有的目標(biāo)文件,以便重編譯。

2、.PHONY原理

但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),【 .PHONY】 修飾,偽目標(biāo)的特性是,總是被執(zhí)行的。

  • 首先回答一下什么叫做總是被執(zhí)行呢?接下來,我舉個(gè)例子來說明:

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

  • ?此時(shí)上述這種現(xiàn)象即為不能總是被執(zhí)行
  • 那么我們想總是被執(zhí)行有沒有什么方法呢?此時(shí)我們只需在前面加上【.PHONY】即可實(shí)現(xiàn)這樣的操作,具體如下:

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

  • ?此時(shí),當(dāng)我們?cè)偃?zhí)行上述操作時(shí),我們就可以發(fā)現(xiàn)此時(shí)系統(tǒng)不會(huì)在提示了,可以編過:

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

?小結(jié):

  • 【.PHONY】后面跟的目標(biāo)都被稱為偽目標(biāo),也就是說我們 make 命令后面跟的參數(shù)如果出現(xiàn)在.PHONY 定義的偽目標(biāo)中,那就直接在Makefile中就執(zhí)行偽目標(biāo)的依賴和命令。
  • 不管Makefile同級(jí)目錄下是否有該偽目標(biāo)同名的文件,即使有也不會(huì)產(chǎn)生沖突。另一個(gè)就是提高執(zhí)行makefile時(shí)的效率。

(五)三個(gè)時(shí)間

首先,我們先來看看以下現(xiàn)象,有了這個(gè)現(xiàn)象的產(chǎn)生,緊接著我在帶大家理解一下 幾個(gè)時(shí)間的概念?。?!

  • 在上述刪除操作中,我們可以發(fā)現(xiàn),我們是把刪除操作放在最后面的,那么此時(shí)我們放在最前面會(huì)發(fā)生什么呢?我們一起看看:

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

  • 可以看到,在調(diào)換了位置之后我們直接【make】的話獲取的就是clean對(duì)象了,想要去使用gcc編譯源文件生成可執(zhí)行文件就需要用到【make myfile】。
  • 不過也并不是第一組依賴關(guān)系和依賴方法就一定要直接【make】,我們使用【make clean】也是可以用的

1、make的判斷機(jī)制

此時(shí),很多小伙伴就會(huì)好奇,它是怎么知道的呢?make究竟是如何知道我們的可執(zhí)行文件是否需要重新編譯呢?

接下來,我再給小伙伴們看一個(gè)現(xiàn)象:

  • 上述我們已經(jīng)得知,當(dāng)我們不加偽目標(biāo)時(shí),當(dāng)執(zhí)行完一次【make】獲取 【myfile】之后,當(dāng)我們?cè)俅螆?zhí)行【make】系統(tǒng)是會(huì)提示 “此時(shí)已經(jīng)是最新文件”;
  • 但是,同樣的,當(dāng)我們執(zhí)行完第一次【make】之后,此時(shí)去打開一下源文件,即【myfile.c】之后,我們?cè)凇緈ake】一下,此時(shí)就又可以正常的編譯通過了

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

?解析如下:

  • 我們可以將源文件和可執(zhí)行文件當(dāng)做是一條時(shí)間軸。對(duì)于可執(zhí)行文件來說,它生成的時(shí)間一定是晚于源文件的【因?yàn)橹虚g要經(jīng)過一系列編譯 + 鏈接的過程】

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

接下來我們可以通過【stat】這個(gè)指令來查看源文件和可執(zhí)行文件的所有屬性,具體如下:

  • Access time:表示最后一次訪問(僅僅是訪問,沒有改動(dòng))文件的時(shí)間。
  • Change time:表示最后一次對(duì)文件屬性改變的時(shí)間,包括權(quán)限,大小,屬性等

  • Modify time:表示最后一次修改文件的時(shí)間(我們比較的是這個(gè))

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

?從上我們可以看出 【20:43:00】是比【20:43:01】要早的。因此【make】指令才會(huì)不起作用

  • 因此我們得出結(jié)論它就是通過這個(gè)Modify時(shí)間來進(jìn)行對(duì)比才能判斷出是否需要重新編譯

那我們能否可以去欺騙一下make呢?

答案是可以的,此處我們可以使用這個(gè)【touch】指令,它除了創(chuàng)建文件之外還有其他功能喲!

  • 若是要?jiǎng)?chuàng)建的這個(gè)文件存在,那就修改它的時(shí)間為最新的時(shí)間
  • 若是要?jiǎng)?chuàng)建的這個(gè)文件不存在,那就直接創(chuàng)建該文件即可

接下來我們來看看現(xiàn)象是怎么回事:

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

?文章來源地址http://www.zghlxwxcb.cn/news/detail-418174.html

小結(jié):

?? ?? ?? 1)當(dāng)僅讀取或訪問文件時(shí),access time 改變,而modify time?,change time 不會(huì)改變。

??? ?? ? 2)當(dāng)修改文件內(nèi)容時(shí),modify time?,change time 會(huì)改變,access time?不一定改變。

?? ?? ?? 3)當(dāng)修改文件權(quán)限屬性時(shí),change time 改變,而access?time?,modify time 不會(huì)改變。

這就是我們剛開始時(shí)將【Makefile】定義時(shí)提到的關(guān)于 時(shí)間關(guān)系 的詳細(xì)解答!?。?/p>


(六)總結(jié)

到此,關(guān)于 make/Makefile 的知識(shí)點(diǎn)便全部講解結(jié)束了。在后面的學(xué)習(xí)中,我們還將進(jìn)一步的對(duì)其進(jìn)行講解?。。?/p>

接下來,我們來回顧一下本文都有哪些知識(shí)點(diǎn):

  • 1、首先我們簡單的回顧了一下代碼翻譯的過程,緊接著根據(jù)其在執(zhí)行過程中存在的弊端,我們引出了?make/Makefile ;
  • 2、在正式介紹之前,我們了解了關(guān)于二者的背景知識(shí),知道了【Makefile】它是一個(gè)文件,【make】它是一個(gè)命令;
  • 3、接著我們簡單的實(shí)踐了一下,再次基礎(chǔ)上引出了 【依賴關(guān)系】和【依賴方法】,并對(duì)其進(jìn)行了講解;
  • 4、接下來,掌握了如何去清理項(xiàng)目中的文件的 小妙招,并知道了【?.PHONY】修飾的文件叫做【偽目標(biāo)文件】;
  • 5、最后我們知道了【make】判斷一個(gè)文件是否需要重新編譯的原理,是基于比較源文件目標(biāo)文件的【Modify】時(shí)間而定的。

以上便是本文的全部知識(shí)了,感謝大家的閱讀!??!

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

?

到了這里,關(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ǎng)。本站僅提供信息存儲(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)紅包