• 实例:对2个Makefile的备注


    实例1:Makefile编译链接简单.c函数

    example.c

    Makefile

    1 exe: example.c
    2         gcc example.c -o exe
    3 
    4 clean:
    5         rm exe

    执行效果:

    实例2:

     1 CC        = arm-linux-gcc
     2 LD         = arm-linux-ld
     3 OBJCOPY    = arm-linux-objcopy
     4 OBJDUMP    = arm-linux-objdump
     5 AR        = arm-linux-ar
     6 
     7 INCDIR    := $(shell pwd)
     8 # C预处理器的flag,flag就是编译器可选的选项
     9 CPPFLAGS    := -nostdlib -nostdinc -I$(INCDIR)/include
    10 # C编译器的flag
    11 CFLAGS        := -Wall -O2 -fno-builtin
    12 
    13 #导出这些变量到全局,其实就是给子文件夹下面的Makefile使用
    14 export CC LD OBJCOPY OBJDUMP AR CPPFLAGS CFLAGS
    15 
    16 
    17 objs := start.o led.o clock.o uart.o main.o stdio.o 
    18 
    19 #变量在声明时需要给予初值,在使用时需要在变量名前加上$,给变量加上括号是为了更加安全地使用这个变量
    20 #如果需要使用真实的$符号,那么需要用$$来表示
    21 uart.bin: $(objs)                        
    22     $(LD) -Tlink.lds -o uart.elf $^
    23     $(OBJCOPY) -O binary uart.elf uart.bin
    24     $(OBJDUMP) -D uart.elf > uart_elf.dis
    25     gcc mkv210_image.c -o mkx210
    26     ./mkx210 uart.bin 210.bin
    27 
    28 lib/libc.a:
    29     cd lib;    make;    cd ..
    30 
    31 #$@表示规则中的目标文件集,在模式规则中,如果有多个目标,那么其就是匹配于目标中模式定义的集合;
    32 #$<依赖目标中的第一个目标名字,如果依赖目标是以模式(即"%")定义的,那么“$<”将是符合模式的一系列的文件集
    33 %.o : %.S
    34     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
    35 
    36 %.o : %.c
    37     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
    38 
    39 clean:
    40     rm *.o *.elf *.bin *.dis mkx210 -f
  • 相关阅读:
    Java自学-多线程 线程池
    Java自学-多线程 交互
    Java自学-多线程 死锁
    Java自学-多线程 线程安全的类
    Windows任务计划定时执行脚本简介
    利用 Powershell 编写简单的浏览器脚本
    Edge浏览器现已支持Tampermonkey(油猴)
    Chrome扩展移植到Edge浏览器教程
    <Android> Location Service 分析
    <OPTEE>Trusted Application结构分析
  • 原文地址:https://www.cnblogs.com/CYP01/p/5927228.html
Copyright © 2020-2023  润新知