• 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 = .; 定义变量=当前位置地址
    }
  • 相关阅读:
    MYSQL分库分表
    MYSQL主从数据库
    mysql not in用法
    python 文件及目录操作
    python 读写文件
    python字符编码
    python类的继承、封装和多态
    python之定义类创建实例
    理解OSI参考模型
    python闭包与装饰器
  • 原文地址:https://www.cnblogs.com/Mike2019/p/12190346.html
Copyright © 2020-2023  润新知