在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      博客專欄

      EEPW首頁 > 博客 > make、make all和make clean的使用方法

      make、make all和make clean的使用方法

      發(fā)布人:美男子玩編程 時間:2024-01-10 來源:工程師 發(fā)布文章

      剛接觸Linux,認(rèn)為直接make后就完成了編譯,沒想到編譯出的結(jié)果存在很大問題,原來是make、make all和make clean的使用方法不對。

      1

      理論

      make、make all和make clean 是在使用 make 構(gòu)建系統(tǒng)時常見的命令。它們用于編譯和管理項目中的代碼。以下是每個命令的功能和區(qū)別:

      1、make

      • 功能

        make 命令默認(rèn)會查找當(dāng)前目錄下的 Makefile 或 makefile 文件,并執(zhí)行該文件中的第一個目標(biāo)(target)。

        如果第一個目標(biāo)依賴于其他目標(biāo),make 會先構(gòu)建這些依賴目標(biāo)。

      • 使用場景

        通常用于編譯和鏈接項目中的代碼。

        如果沒有指定目標(biāo),make 會嘗試編譯和鏈接整個項目。

      • 示例


        • 假設(shè) Makefile 的第一個目標(biāo)是 all,則運(yùn)行 make 會自動執(zhí)行 make all。

      2、 make all

      • 功能

        make all 通常用于編譯和構(gòu)建整個項目。

        all 是一個常見的目標(biāo),一般在 Makefile 中明確定義,用于編譯項目中的所有必要文件。

      • 使用場景

        在想要編譯項目中的所有組件時使用。

        這通常是項目構(gòu)建的標(biāo)準(zhǔn)步驟。

      • 示例


        • Makefile 中可能包含以下內(nèi)容:




      all: prog1 prog2prog1: ...prog2: ...

      運(yùn)行 make all 會依次構(gòu)建 prog1 和 prog2。

      3、make clean 

      • 功能

        make clean 用于清理項目,通常會刪除所有由之前的構(gòu)建過程生成的文件,如對象文件(.o)、編譯產(chǎn)物等。

      • 使用場景

        在需要清理構(gòu)建環(huán)境(例如,重新從頭開始構(gòu)建項目)時使用。

      • 示例


        • Makefile 中可能包含以下內(nèi)容:



      clean:    rm -f *.o myProgram

      運(yùn)行 make clean 會刪除所有對象文件和程序 myProgram。

      所以:

      • make:默認(rèn)構(gòu)建項目,根據(jù) Makefile 中的第一個目標(biāo)執(zhí)行。

      • make all:明確構(gòu)建整個項目,通常是 Makefile 中定義的標(biāo)準(zhǔn)目標(biāo)。

      • make clean:清理項目,刪除之前構(gòu)建過程中生成的文件,準(zhǔn)備一個干凈的構(gòu)建環(huán)境。

      2

      實踐

      讓我們通過一個具體的例子來解釋 make、make all 和 make clean 的功能和區(qū)別。

      假設(shè)我們有一個簡單的C語言項目,包含兩個源文件:main.c 和 helper.c,以及一個頭文件 helper.h。我們將創(chuàng)建一個 Makefile 來編譯和管理這個項目。

      目錄結(jié)構(gòu)如下:






      /項目目錄|-- main.c|-- helper.c|-- helper.h|-- Makefile

      假設(shè) main.c 內(nèi)容如下:









      #include#include "helper.h"int main() {    printf("Hello, World!n");    helperFunction();    return 0;}

      helper.c內(nèi)容如下:







      #include#include "helper.h"void helperFunction() {    printf("Helper function called.n");}

      helper.h內(nèi)容如下: 


      void helperFunction();

      一個簡單的 Makefile 可能如下所示:






















      CC=gccCFLAGS=-I. # 默認(rèn)目標(biāo)all: myProgram # 構(gòu)建最終程序myProgram: main.o helper.o    $(CC) -o myProgram main.o helper.o # 編譯 main.cmain.o: main.c    $(CC) -c main.c $(CFLAGS) # 編譯 helper.chelper.o: helper.c    $(CC) -c helper.c $(CFLAGS) # 清理構(gòu)建文件clean:    rm -f *.o myProgram

      所以如何使用make、make all和make clean呢?步驟如下:

      • 在包含這些文件的目錄中打開終端。

      • 運(yùn)行 make 或 make all。

        這將編譯代碼并生成 myProgram。

      • 運(yùn)行 ./myProgram 查看輸出。

      • 完成后,運(yùn)行 make clean 清理構(gòu)建文件。

      說明:

      make 或 make all

      • 運(yùn)行 make 或 make all 將編譯 main.c 和 helper.c,然后鏈接這些對象文件以創(chuàng)建可執(zhí)行文件 myProgram。

      • 這是因為 all 是 Makefile 中定義的默認(rèn)目標(biāo),而 make 默認(rèn)執(zhí)行第一個目標(biāo)。

      make clean

      • 運(yùn)行 make clean 將刪除所有編譯生成的對象文件(.o 文件)和可執(zhí)行文件 myProgram。

      • 這用于清理項目,確保下次構(gòu)建時從干凈狀態(tài)開始。

      *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



      關(guān)鍵詞: make

      技術(shù)專區(qū)

      關(guān)閉