Makefile文件示例
整个makefile文件示例:
#Design by slowby for S5PV210
#define var
#目标文件,终极目标
TARGET:= led.bin
BUILD := led
#如果没定义SD ?表示没定义
MYENV?= SD
SDTOOLS:= ./mk210 #sdtools截取前
16kB的内容,mkv210_image.c
#多文件
COBJS+= start.o
COBJS+= main.o
COBJS+= led.o
#工具集
CROSS_COMPILE = arm-linux-
#交叉编译器
CC:= $(CROSS_COMPILE)gcc
#链接器
LD:= $(CROSS_COMPILE)ld
#去文件格式转换工具
OBJCOPY := $(CROSS_COMPILE)objcopy
#编译选项
#显示警告信息
CFLAGS+= -Wall
#增加头文件查找目录
CFLAGS+= -I./inc
#链接选项
#主要是链接地址
#添加链接脚本,可以不用在意COBJS的添加顺序 -T是必须的,链接脚本名为map.lds
LDFLAGS+= -Tmap.lds
#. = 0x0; + -Ttex 的值作为基地址
ifeq ($(MYENV),SD)
LDFLAGS+= -Ttext=0x0
else
LDFLAGS+= -Ttext=0x20000000
endif
#Way
#$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。
all:$(TARGET)
ifeq ($(MYENV),SD)
#SD
#生成临时目标文件$@.TMP
#添加头信息校验
$(TARGET):$(BUILD)
$(OBJCOPY) -O binary $^ $@.TMP
$(SDTOOLS) $@.TMP $@
cp $@ ../bin -f
else
#RAM
#所有的$^依赖文件,生成目标文件$@
$(TARGET):$(BUILD)
$(OBJCOPY) -O binary $^ $@
cp $@ ../bin -f
endif
#链接 依赖于$^生成$@
$(BUILD):$(COBJS)
$(LD) $(LDFLAGS) -o $@ $^
#编译
#所有的.c生成所有的.o
%.o:%.c
$(CC) $(CFLAGS) -c -o $@ $^
#大S,c语言可以去处理汇编
%.o:%.S
$(CC) $(CFLAGS) -c -o $@ $^
clean:
rm -f $(TARGET) $(BUILD) *.o
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?