Linux Makefile簡單介紹

2021-09-26 16:32:26 字數 3366 閱讀 9468

.c -> .exe

linux 中 編譯器 gcc和g++

預處理 -e

彙編 -s

編譯 -c

鏈結 -o

➜  hello gcc -e hello.c -o hello.i

➜ hello ls

hello.c hello.i

來看一下hello.i的內容

巨集定義在與處理的時候就展開了

➜  hello gcc -s hello.i -o hello.s

➜ hello ls

hello.c hello.i hello.s

產生的彙編**

gcc -c hello.s -o hello.o
gcc hello.o -o hello
目標檔案:依賴檔案

[tab] 指令

第乙個目標檔案是我的最終目標 遞迴

hello:hello.o

gcc hello.o -o hello

hello.o:hello.s

gcc -c hello.s -o hello.o

hello.s:hello.i

gcc -s hello.i -o hello.s

hello.i:hello.c

gcc -e hello.c -o hello.i

➜  hello ls

hello.c makefile

➜ hello make

gcc -e hello.c -o hello.i

gcc -s hello.i -o hello.s

gcc -c hello.s -o hello.o

gcc hello.o -o hello

➜ hello ls

hello hello.c hello.i hello.o hello.s makefile

偽目標

:phony

clear: # 名稱,可改

=(替換)

+=(追加)

:=(恆等於)常量

tar = test

obj = circle.o cube.o main.o

cc := gcc

$(tar):$(obj)

$(cc) $(obj) -o $(tar)

circle.o:circle.c

$(cc) -c circle.c -o circle.o

cube.o:cube.c

$(cc) -c cube.c -o cube.o

main.o:main.c

$(cc) -c man.c -o main.o

.phony

clearall:

rm -rf $(obj) $(tar)

clear:

rm -rf $(obj)

類似c語言的巨集定義

使用變數$(變數名)

%.c %.o

任意的.c或.o檔案

*.c *.o

所有的.c或.o檔案

tar = test

obj = circle.o cube.o main.o

cc := gcc

$(tar):$(obj)

$(cc) $(obj) -o $(tar)

%.o:%.c

$(cc) -c %.c -o %.o

.phony

clearall:

rm -rf $(obj) $(tar)

clear:

rm -rf $(obj)

需要任何的.o檔案都可以執行對應的.c

$@所有的目標檔案

$^所有的依賴檔案

$<所有的依賴檔案的第乙個檔案

tar = test

obj = circle.o cube.o main.o

cc := gcc

rmrf := rm -rf

$(tar):$(obj)

$(cc) $^ -o $@

%.o:%.c

$(cc) -c $^ -o $@

.phony

clearall:

$(rmrf) $(obj) $(tar)

clear:

$(rmrf) $(obj)

函式呼叫,很像變數的使用,也是以$來標識的,其語法如下:

()

或是${}

linux makefile檔案分析

cflags wall wstrict prototypes g fomit frame pointer ffreestanding all crt0.s leds.c arm linux gcc cflags c o crt0.o crt0.s arm linux gcc cflags c o l...

Linux Makefile由淺入深剖析

經過長時間學習linux makefile,於是和大家分享一下,看完本文你肯定有不少收穫,希望本文能教會你更多東西。假設我們有乙個程式由5個檔案組成,源 如下 main.c include mytool1.h include mytool2.h int main mytool1.c include ...

linux makefile檔案心得筆記

經過長時間學習linux makefile檔案,我針對乙個簡單的例項進行了對linux makefile檔案的總結 於是和大家分享一下,看完本文你肯定有不少收穫,希望本文能教會你更多東西。sample makefile edit main.o kbd.o command.o display.o 第一...