在Linux中,Makefile是一種用來自動化編譯和鏈接程序的工具。它可以根據程序的依賴關系來自動判斷需要重新編譯的文件,并生成可執行文件。
下面是一個簡單的Makefile的例子:
CC=gcc
CFLAGS=-c -Wall
all: hello
hello: main.o hello.o
$(CC) main.o hello.o -o hello
main.o: main.c
$(CC) $(CFLAGS) main.c
hello.o: hello.c
$(CC) $(CFLAGS) hello.c
clean:
rm -rf *.o hello
上述Makefile中的關鍵部分包括:
CC
:編譯器的名稱,可根據需要更改為其他編譯器,如clang
;
CFLAGS
:編譯選項,例如-c
表示編譯為目標文件,-Wall
表示開啟所有警告;
all
:默認的目標,即執行make
命令時,默認執行的目標;
hello
:生成可執行文件的目標,依賴于main.o
和hello.o
;
main.o
和hello.o
:分別表示main.c
和hello.c
文件的目標文件,依賴于對應的源文件;
clean
:清理生成的目標文件和可執行文件。
使用Makefile時,只需在終端中進入Makefile所在目錄,并執行make
命令即可開始編譯和鏈接程序。執行make clean
命令可以清理生成的目標文件和可執行文件。