1-1-3 Makefile工程管理初探

1.  makefile的用途:用來描述程序編譯、鏈接的規則,使程序編譯自動化

2.  makefile的構成:規則、變量

3.  makefile的執行:執行make 或者 make clean等命令。

4.  格式爲:/* 注意空格,“|”表示行首,“<tab>”表示table鍵 */

        |targets : prerequisites
        |<tab>command

    例如:

        |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.  變量

    直接可以使用的系統變量包括:

        $^:所依賴的文件    $@:目標    $<:第一個依賴的文件

    用法舉例:

        /* 使用前 */
        |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.  通用規則

        /* 把目錄中所有的.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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章