链接操作
使用默认链接文件生成可执行文件:
cc = gcc prom = hello DIR= ($shell pwd) inc_dir = $(DIR)/inc src_dir = $(DIR)/src obj = $(pathsubst $(src_dir)/%.c, $(src_dir)/%.o, $(wildcard $(src_dir)/%.c) ) $(prom): $(obj) $(cc) -o $(prom) $(obj) %.o: %.c $(deps) $(cc) -I$(inc_dir) -c $< -o $@ .PHONY : clean clean: rm -rf $(obj) $(prom)
$(cc) -o $(prom) $(obj) 执行的是链接操作,虽然是用 gcc,但是实际还是用 ld
指定链接文件生成可执行文件:
prom = hello DIR= ($shell pwd) inc_dir = $(DIR)/inc src_dir = $(DIR)/src obj = $(pathsubst $(src_dir)/%.c, $(src_dir)/%.o, $(wildcard $(src_dir)/%.c) ) output = $(DIR)/out LINK_DIR = $(DIR)/toolchain/bin/arm-none-eabi- LINK_LD = $(LINK_DIR)/ld LINK_OBJCOPY = $(LINK_DIR)/objcopy LINK_LDFILE = $(DIR)/link.ld cc = $(LINK_DIR)/gcc all: clean $(output) $(obj_dir) $(prom) $(output): mkdir $@ $(obj_dir): mkdir $@ $(prom): $(obj) $(LINK_LD) -T$(LINK_LDFILE ) $(obj) -o hello.elf $(LINK_OBJCOPY) -O binary -S hello.elf hello.bin $(obj_dir)/%.o: $(src_dir)/%.c $(cc) -I$(inc_dir) -c $< -o $@ .PHONY : clean clean: rm -rf $(obj) rm -rf %(output)/*
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)