吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

jf_Vqngj70R ? 來源:美男子玩編程 ? 2024-01-05 12:32 ? 次閱讀

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

1理論

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

1、make

功能

make 命令默認會查找當前目錄下的 Makefile 或 makefile 文件,并執行該文件中的第一個目標(target)。

如果第一個目標依賴于其他目標,make 會先構建這些依賴目標。

使用場景

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

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

示例

假設 Makefile 的第一個目標是 all,則運行 make 會自動執行 make all。

2、make all

功能

make all 通常用于編譯和構建整個項目。

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

使用場景

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

這通常是項目構建的標準步驟。

示例

Makefile 中可能包含以下內容:

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

運行 make all 會依次構建 prog1 和 prog2。

3、make clean

功能

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

使用場景

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

示例

Makefile 中可能包含以下內容:

clean:
    rm -f *.o myProgram

運行 make clean 會刪除所有對象文件和程序 myProgram。

所以:

make:默認構建項目,根據 Makefile 中的第一個目標執行。

make all:明確構建整個項目,通常是 Makefile 中定義的標準目標。

make clean:清理項目,刪除之前構建過程中生成的文件,準備一個干凈的構建環境。

2實踐

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

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

目錄結構如下:

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

假設 main.c 內容如下:

#include
#include "helper.h"


int main() {
    printf("Hello, World!
");
    helperFunction();
    return 0;
}

helper.c內容如下:

#include
#include "helper.h"


void helperFunction() {
    printf("Helper function called.
");
}

helper.h內容如下:

void helperFunction();

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

CC=gcc
CFLAGS=-I.
 
# 默認目標
all: myProgram
 
# 構建最終程序
myProgram: main.o helper.o
    $(CC) -o myProgram main.o helper.o
 
# 編譯 main.c
main.o: main.c
    $(CC) -c main.c $(CFLAGS)
 
# 編譯 helper.c
helper.o: helper.c
    $(CC) -c helper.c $(CFLAGS)
 
# 清理構建文件
clean:
    rm -f *.o myProgram

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

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

運行 make 或 make all。

這將編譯代碼并生成 myProgram。

運行 ./myProgram 查看輸出。

完成后,運行 make clean 清理構建文件。

說明:

make 或 make all

運行 make 或 make all 將編譯 main.c 和 helper.c,然后鏈接這些對象文件以創建可執行文件 myProgram。

這是因為 all 是 Makefile 中定義的默認目標,而 make 默認執行第一個目標。

make clean

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

這用于清理項目,確保下次構建時從干凈狀態開始。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210391
  • 命令
    +關注

    關注

    5

    文章

    696

    瀏覽量

    22109
  • 編譯
    +關注

    關注

    0

    文章

    661

    瀏覽量

    33040
  • make
    +關注

    關注

    0

    文章

    16

    瀏覽量

    12543

原文標題:make、make all和make clean的使用方法

文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Hightec編譯出錯make: *** No rule to make target 'all'. Stop.

    make: *** No rule to make target 'all'.Stop.
    發表于 12-17 11:18

    Make Precise Base-Station Powe

    Make Precise Base-Station PowerMeasurements:Make Precise Base-StationPowerMeasurements:A highly
    發表于 09-23 23:03 ?12次下載

    GNU make中文手冊 (pdf版下載)

    GNU make中文手冊 (pdf版下載):GNU make中文手冊.1ver - 3.81第一章:概述.71.1 Make之前基本知識:.71.1.1 概述71.1.2 準備知識81.2 GNU
    發表于 10-09 17:09 ?0次下載

    gnu make使用手冊

    gnu make使用手冊本文瑾獻給所有熱愛Linux的程序員!本文檔版權所有,禁止用于任何商業行為。本文比較完整的講述GNU make工具,涵蓋GNU make的用法、語法。同時重點討論如何為一
    發表于 10-09 17:10 ?0次下載

    gun make教程

    gun make教程.rar 關于本書 本文瑾獻給所有熱愛Linux的程序員!本中文文檔版權所有。 本文比較完整的講述GNU make工具,涵蓋GNU make的用法、語法。同時
    發表于 03-10 13:50 ?0次下載

    Integrated Solutions Make Anal

    Integrated Solutions Make Analog Filter Design Easy Abstract: This application note explains
    發表于 11-08 17:40 ?1056次閱讀
    Integrated Solutions <b class='flag-5'>Make</b> Anal

    C2make手冊

    這份手冊描述了由秦作坊的默之實現的Chinc2make(2.10.06-8版本,2010年8月1日)。當您進行C、C++、Gtk+、Gtkmm、Motif、wxWidget和openGL程序設計時,c2make工具可以根據源代碼文件直接生成Makefile文件
    發表于 04-18 20:29 ?6次下載

    gnu make 中文手冊

    介紹怎樣寫Makefile,并能夠使用GNU 的make來管理自己的工程
    發表于 11-10 16:49 ?2次下載

    GNU_make中文手冊

    電子專業單片機相關知識學習教材資料——GNU-Make
    發表于 08-23 16:23 ?0次下載

    GNU-make中文手冊

    電子專業單片機相關知識學習教材資料——GNU-Make
    發表于 08-23 16:23 ?0次下載

    GNU_make中文手冊

    電子專業單片機相關知識學習教材資料——GNU-Make
    發表于 08-23 16:23 ?0次下載

    GNU-Make-使用手冊

    電子專業單片機相關知識學習教材資料——GNU-Make
    發表于 08-23 16:23 ?0次下載

    GNU_Make_中文手冊下載

    GNU_Make_中文手冊下載
    發表于 10-30 09:20 ?12次下載
    GNU_<b class='flag-5'>Make</b>_中文手冊下載

    Openwrt通用固件 make menuconfig配置教程

    Openwrt通用固件 make menuconfig配置教程
    發表于 09-07 12:01 ?5次下載

    GNU make中文手冊

    電子發燒友網站提供《GNU make中文手冊.pdf》資料免費下載
    發表于 06-05 13:22 ?0次下載
    宁化县| 百家乐官网巴厘岛上海在线| 嘉禾百家乐的玩法技巧和规则| 最好的百家乐官网博彩网站| 百家乐平一直压庄| 百家乐网站那个好| 噢门百家乐官网玩的技巧| 大发888真人网址| 百家乐赌场怎么玩| 瑞士百家乐官网的玩法技巧和规则 | 百家乐真人百家乐皇冠| 百家乐官网赌博现金网| 五湖四海娱乐城| 大发888充值100元| 百家乐平台凯发| 百家乐开户代理| 百家乐官网直揽经验| 免佣百家乐官网赌场优势| 大发888下载17| 百家乐知道| 澳门百家乐文章| 欧洲百家乐官网的玩法技巧和规则| 澳门百家乐官网赢钱秘| 真钱游戏网| 莆田棋牌迷游戏中心| 澳门百家乐必胜看| 百家乐游戏介绍与分析| 注册百家乐送彩金 | 百家乐官网双龙出海注码法| 大发888娱乐场官方下载| 长沙百家乐的玩法技巧和规则| 德州百家乐赌博规则| 澳门百家乐玩大小| 百家乐最常见的路子| 百家乐网络视频游戏| 百家乐真人游戏网上投注 | 现金百家乐官网赌法| 茶陵县| 吴旗县| 百家乐官网在发牌技巧| 帝王百家乐官网全讯网2|