linux makefile檔案分析

2021-08-28 01:20:27 字數 1752 閱讀 8796

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 leds.o leds.c

arm-linux-ld -tleds.lds crt0.o leds.o -o leds_elf

arm-linux-objcopy -o binary -s leds_elf leds.bin

arm-linux-objdump -d -m arm leds_elf > leds.dis

clean:

rm -f leds.dis leds.bin leds_elf *.o

下面是  leds.lds檔案:

sections 

.rodata align(4) :

.data align(4) :

.bss align(4) :

}

cflags     := -wall -wstrict-prototypes -g -fomit-frame-pointer -ffreestanding

-g :加上除錯資訊

-wall:開啟編譯警告

-wstrict-prototypes 使用了非原型的函式宣告時給出警告

-fomit-frame-pointer能夠提高程式效能,但是使用-fomit-frame-pointer會由於沒有儲存棧呼叫位址,而導致無法追蹤函式呼叫順序

用"-fomit-frame-pointer"選項,在編譯時候優化掉sfp

all : crt0.s  leds.c

arm-linux-gcc $(cflags) -c -o crt0.o crt0.s

arm-linux-gcc $(cflags) -c -o leds.o leds.c

arm-linux-ld -tleds.lds  crt0.o leds.o -o leds_elf

arm-linux-objcopy -o binary -s leds_elf leds.bin

arm-linux-objdump -d -m arm  leds_elf > leds.dis

clean:

rm -f   leds.dis leds.bin leds_elf *.o

$(if condition,then-part[,else-part]) 

¾  函式功能:第乙個引數「condition」 ,在函式執行時忽略其前導和結尾空字

符,如果包含對其他變數或者函式的引用則進行展開。如果「condition」的

展開結果非空,則條件為真,就將第二個引數「then_patr」作為函式的計算

表示式;「condition」的展開結果為空,將第三個引數「else-part」作為

函式的表示式,函式的返回結果為有效表示式的計算結果。 

¾  返回值:根據條件決定函式的返回值是第乙個或者第二個引數表示式的計算結

果。當不存在第三個引數「else-part」 ,並且「condition」展開為空,函

數返回空。 

¾  函式說明:函式的條件表示式「condition」決定了函式的返回值只能是

「then-part」或者「else-part」兩個之一的計算結果。 

¾  函式示例: 

linux makefile檔案心得筆記

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

Linux makefile檔案的編寫

main.c include mytool1.h include mytool2.h intmain int argc,char ar mytool1.h ifndef mytool 1 h define mytool 1 h void mytool1 print char print str en...

linux makefile檔案管理工程

make在執行時,需要乙個命名為makefile的檔案.make廢了檔案描述了整個工程編譯,鏈結的規則.其中包括 工程中的哪些原始檔需要編譯以及如何編譯 需要建立哪些庫檔案以及如何建立這些庫檔案 如何最後產生我們想要得可執行檔案.這就是乙個規則 targets prerequisites comma...