Linux 命令 make命令,小白版通俗入門

2021-07-23 19:44:17 字數 2343 閱讀 6484

在make經典教程這篇文章中,對make講的很詳細,但是不太適合小白。

乙個程式語言,從乙個個.h和.c檔案變成包含0和1的可執行檔案需要這麼幾個環節:

源程式->預處理->編譯和優化->生成目標檔案->鏈結->可執行檔案。

在linux上面我們可以用gcc編譯器:

gcc -c生成目標檔案,

在用gcc -o將目標檔案鏈結成可執行檔案

對於很少的檔案我們可以一步步用gcc執行,但是乙個大型複雜專案包含多個的檔案,我們一步一步用gcc就太麻煩了,如果修改某

乙個原始檔,你再次執行make命令,它只是編譯與該檔案相關的目標檔案,因此編譯節約很多時間。

makefile需要按照一定的規則編寫,所需要執行的命令都是以tab鍵開頭,用make就會自動執行。

在vs中我們幾乎沒見過makefile,因為一般情況下,只需要把需要的檔案包含在project中,vs  會自動幫你把makefile寫好。

例子來說明

test.h用於宣告函式

/*filename:test.h*/

extern int add(int i,int j);

test.c用於兩個整數的相加

/*filename:add.c*/

int add(int i,int j)

test_main.c中呼叫add函式

/*filename:test_main.c*/

#include "test.h"

#include main()

(備註一下:extern可置於變數或者函式前,以表示變數或者函式定義在別的檔案中,提示編譯器遇到此變數或函式時,在其他模組中尋找定義。

在程式中取代#include 「*.h」。)

makefile的內容:

all:test

test:test_main.o test.o

gcc test_main.o test.o -o test

test_main.o:test_main.c test.h

gcc -c test_main.c -o test_main.o

test.o:test.c test.h

gcc -c test.c -o test.o

clean:

rm -rf *.o test

注意:makefile裡面的命令是由tab鍵開頭

使用make,就能看見make命令第一次建立的依賴以及實際的目標

如果你再次檢視,目錄內容,裡面多了一些.o檔案和執行檔案:

執行test便可檢視結果:

如果對test.c檔案進行修改,再使用make編譯工程:

就只有test.o進行了編譯而main_test.o沒有重新編譯

可以使用clean清理所有目標檔案和可執行檔案:

如果上次make執行後沒有修改檔案,make命令將不會編譯。如果你想重新編譯可以使用 -b 選項

使用 -d選項列印除錯資訊

想檢視make真正執行過程可以使用-d選項

使用 -c 選項改變目錄

可以在不同的目錄路徑中使用make命令,比如你要使用make命令執行../ 目錄下的makefile檔案,可以使用-c選項

make命令會先切換到指定目錄下,在切換回來

make -f make_test
通過這種方式,make命令會選擇掃瞄make_test來代替makefile。

make命令 clean命令

先先看一下什麼是makefile makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。makefile帶來的好處就是 自動化編譯 一旦寫好...

linux系統make命令用法

解釋 makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell指令碼一樣,其中也可以執行操作 系統的命令。makefile帶來的好處就是 自動化編譯 一旦寫好,只需要乙個make命令,...

linux中的make命令

make命令的選項和引數 k 它的作用是讓make命令在發現錯誤時仍然繼續執行,而不是在檢測到第乙個錯誤時就停下來。n 它的作用是讓make命令輸出將要執行的操作步驟,而不真正執行這些操作 f 它的作用是告訴make命令將哪個檔案作為makefile檔案。如果未使用這個選項,標準版本的make 命令...