Makefile使用:
近日,在学习imx6ull裸机开发时候,对于其Makefile文件编写一直处于懵懂状态,为方便日后深入学习,本文章以正点原子BSP-工程管理实验
闪烁小灯为例,对其中Makefile文件语法进行注释解析。
代码及解释
实验imx6ul.lds
代码如下
SECTIONS{
. = 0X87800000;
.text :
{
obj/start.o
*(.text)
}
.rodata ALIGN(4) : {*(.rodata*)}
.data ALIGN(4) : { *(.data) }
__bss_start = .;
.bss ALIGN(4) : { *(.bss) *(COMMON) }
__bss_end = .;
}
实验中Makefile
代码如下:
CROSS_COMPILE ?= arm-linux-gnueabihf-
TARGET ?= ledc
其中赋值符有如下几种类型:
=
:在给变量的赋值的时候,不一定要用已经定义好的值,也可以使用后面定义的值
:=
:不会使用后面定义的变量,只能使用前面已经定义好的,这就是“=”和“:=”两个的区别
?=
:表示如果变量时,前面没有被赋值,那么此变量就是当前赋值的值,如果前面已经赋过值了,那么就使用前面赋的值。
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
此处CC经赋值后,结果为:
CC = arm-linux-gnueabihf-gcc
这样做的目的是便于我们之后使用变量,其他的同理。
INCUDIRS := imx6u \
bsp/clk \
bsp/led \
bsp/delay
SRCDIRS := project \
bsp/clk \