1. makefile的用途:用來描述程序編譯、連接的規則,使程序編譯自動化linux
2. makefile的構成:規則、變量
bash
3. makefile的執行:執行make 或者 make clean等命令。app
4. 格式爲:/* 注意空格,「|」表示行首,「<tab>」表示table鍵 */ide
|targets : prerequisites |<tab>command
例如:ui
|all: led.o | arm-linux-ld -Tled.lds -o led.elf led.o | arm-linux-objcopy -O binary led.elf led.bin |led.o : led.S | arm-linux-gcc -g -c led.o led.S |.PHONY: clean |clean: | rm -f *.o *.elf *.bin
5. 變量get
直接可使用的系統變量包括:it
$^:所依賴的文件 $@:目標 $<:第一個依賴的文件自動化
用法舉例:編譯
/* 使用前 */ |app1 : app1.o func1.o func2.o | gcc app1.o func1.o func2.o -o app1 |app2 : app2.o func1.o func2.o | gcc app2.o func1.o func2.o -o app2
/* 使用後 */ |obj=func1.o func2.o |app1 : app1.o $(obj) | gcc app1.o $(obj) -o app1 | gcc app2.o $(obj) -o app2
6. 通用規則table
/* 把目錄中全部的.S文件彙編成.o文件 */
|%.o : %.S | gcc -g -c %^
7. 使用注意事項
1.1 同時存在 makefile 和 Makefile 兩個文件,執行make,系統會先執行makefile,若是makefile不存在時,纔會去執行Makefile
1.2 去回顯功能:在command前加上「@」,如:
|hello : hello.c | @gcc hello.c -o helle
1.3 若是makefile改名未file,要make的時候,可加上[-f]選項指定makefile的替代文件,如:
make -f file make -f file clean