剛接觸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文章
11125瀏覽量
207937 -
命令
+關注
關注
5文章
658瀏覽量
21931 -
編譯
+關注
關注
0文章
646瀏覽量
32673 -
make
+關注
關注
0文章
16瀏覽量
12494
原文標題:make、make all和make clean的使用方法
文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論