LED灯实验---Makefile文件解析

一、汇编版本

# 工程名对应的变量
NAME=asm-led

# 交叉编译器的前缀的变量,不同的交叉编译器的前缀可能不同
CROSS_COMPILE = arm-linux-gnueabihf-

# arm-linux-gnueabihf-gcc : 编译器
CC = $(CROSS_COMPILE)gcc
# arm-linux-gnueabihf-ld : 链接器
LD = $(CROSS_COMPILE)ld
# arm-linux-gnueabihf-objcopy : 格式化拷贝命令
OBJCOPY = $(CROSS_COMPILE)objcopy
# arm-linux-gnueabihf-objdump : 反汇编命令
OBJDUMP = $(CROSS_COMPILE)objdump

# Makefile文件本质是由很多规格构成
# 规则包含:目标,依赖,命令
# 目标:依赖 
# 		(tab键)命令
all:
	@# 将.S文件编译生成.o文件  
	@# -O0 : 代码的优化等级,不优化
	$(CC) -O0 -g -c $(NAME).S -o $(NAME).o
	@# 将.o文件链接生成.elf格式文件
	@# -Ttext:指定程序入口地址,参数为物理地址
	$(LD) -Ttext=0xC0008000 $(NAME).o -o $(NAME).elf
	@# 将.elf文件格式化拷贝生成.bin文件 
	$(OBJCOPY) -O binary $(NAME).elf  $(NAME).bin
	@# 将elf格式文件生成.dis的反汇编文件
	$(OBJDUMP) -D $(NAME).elf > $(NAME).dis
	
clean:
	rm -rf *.elf *.bin *.o *.dis

install:
	sudo cp $(NAME).bin  /mnt/hgfs/share/ 

二、C语言版本

(一)Makefile文件

#CROSS_COMPILE:定义了交叉编译工具链的前缀,
#这里是arm-linux-gnueabihf-,用于编译针对ARM架构的代码。
CROSS_COMPILE = arm-linux-gnueabihf-
#NAME:项目名称,可以在命令行使用NAME参数赋值进行指定 
#如:make NAME=led; 注意此时下载时 make install NAME=led 
NAME = interface
#=============================================================================#
#CFLAGS:定义了C编译器的标志(flags)
#添加gdb调试信息(-g)
#指定ARM架构(-marm)
#显示所有警告(-Wall)
#关闭优化(-O0)选值范围在-O0~-O2,-O2优化等级最高
#指定ABI(-mabi=apcs-gnu)
#启用NEON浮点支持(-mfpu=neon)、指定浮点ABI(-mfloat-abi=softfp)
#禁用内置函数(-fno-builtin)
#不使用标准C库(-nostdinc)
#指定头文件路径(-I)。
CFLAGS += -g -marm -Wall -O0 -mabi=apcs-gnu -mfpu=neon -mfloat-abi=softfp -fno-builtin \
			-nostdinc -I./common/include    -I./include 

#链接命令 		                                       
LD	= $(CROSS_COMPILE)ld
#C编译器
CC	= $(CROSS_COMPILE)gcc
#查看elf文件的符号表信息
NM  = $(CROSS_COMPILE)nm
#二进制格式化拷贝
OBJCOPY = $(CROSS_COMPILE)objcopy
#反汇编工具
OBJDUMP = $(CROSS_COMPILE)objdump
#============================================================================#
#OBJSss:使用wildcard函数收集所有的.S(汇编源文件)和.c(C源文件)文件,这些文件来自不同的目录(start/、common/src/、src/以及当前目录)。	
OBJSss 	:= $(wildcard start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值