Makefile文件格式


  Make的工作主要依賴於一個叫Makefile的文件。Makefile文件描述了整個程序的編譯、鏈接等規則。

1、Makefile格式

targets : prerequisites
  command

targets:目標

prerequisites:依賴

command:命令,命令需要使用[TAB]鍵空格

例:

led.elf : led.o
  arm-linux-ld -Tled.lds -o led.elf led.o

2、Makefile構成-偽目標

Makefile把那些只包含命令,沒有任何依賴的目標稱為“偽目標”.

.PHONY : clean
clean :
  rm -f hello main.o func.o

3、 Makefile構成-最終目標

  1. Make led.o //Makefile查找目標為led.o的規則並執行。
  2. Make //默認執行第一條規則,第一條規則的依賴文件找不到的話,自動執行目標文件為第一條規則的依賴文件的規則。
  3. 用戶自定義的變量

4、Makefile構成-自定義變量

使用變量前:

app1: app1.o func1.o func2.o -o app1
    gcc app1.o func1.o func2.o -o app1
app2: app2.o func1.o func2.o -o app2
    gcc app2.o func1.o func2.o -o app2

使用變量后:

obj=func1.o func2.o
app1: app1.o $(obj)
    gcc app1.o $(obj) -o app1
app2: app2.o $(obj)
    gcc app2.o $(obj) -o app2

5、系統定義好的變量

$^:代表所有的依賴文件

$@:代表目標

$<:代表第一個依賴文件

使用前:

led.o : led.S
    arm-linux-gcc -g -o led.o -c led.S

使用后:

led.o : led.S
arm-linux-gcc -g -o $@ -c $^

6、Makefile構成-通配符

%.o //表示所有以.o結尾的文件

%.c //表示所有以.c結尾的文件

%.s //表示所有以.s結尾的文件

  ……

1.1.6. Makefile使用技巧

  1. 注釋:“#注釋內容”
  2. 去回顯:命令前加“@”

1.1. 鏈接器腳本  

SECTION{
. = 0x30000000   # .是指當前地址,在此處設置起始鏈接地址為0x30000000

. = ALING(4);   #設置4字節對齊
    .text:     #代碼段
    {
    start.o(.text) #代碼段0地址執行的程序名
    *(.text)
    }

. = ALING(4)     #設置4字節對齊
    .data:       #數據段
    {
    *(.data)
    }

    . = ALING(4)     #設置4字節對齊
    bss_start = .;   #定義變量=當前位置地址
    .bss:       #BSS段
    {
    *(.bss)
    }
    bss_end = .; 定義變量=當前位置地址
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM