汇编文件的编译makefile

本文介绍了一个简单的 ARM Linux 环境下 OLED 显示器的编译过程,包括使用 arm-linux-gcc 编译源代码、链接生成 ELF 文件及最终输出二进制文件的步骤。

all:

        arm-linux-gcc -c -o led_on.o led_on.S

        arm-linux-ld -Ttest 0 led_on.o -o led_on.elf 

        arm-linx-objcopy -o binary -S led_on.elf led_on.bin

clean:

        rm -rf *.o *.elf *.bin

### 使用 Makefile 编译汇编代码 为了使用 `Makefile` 来编译汇编代码,可以定义特定的目标和规则来处理 `.s` 或者 `.asm` 文件。下面是一个简单的例子展示如何设置一个用于编译汇编文件的 `Makefile`。 #### 定义变量 通常会先设定一些常用的路径以及工具链名称作为变量以便后续调用: ```makefile AS := as # GNU Assembler LD := ld # Linker CC := gcc # C Compiler (for linking) ASMFLAGS := -g # Flags for assembler LDFLAGS := # Flags for linker ``` #### 设置源文件目录结构与目标文件名 指定项目中的各个部分的位置,并给出最终生成二进制的名字: ```makefile SRCDIR := src/ OBJDIR := obj/ BINDIR := bin/ TARGET := $(BINDIR)/my_program ``` #### 列举所有的汇编文件并转换为目标文件列表 这里假设所有汇编源码都放在 `src/assembly/` 下面: ```makefile ASMSRC := $(wildcard $(SRCDIR)*.s) OBJS := $(patsubst %.s,$(OBJDIR)%.o,$(notdir $(ASMSRC))) ``` #### 规则:构建整个工程 此规则负责链接对象文件形成最终可执行文件: ```makefile all: $(TARGET) $(TARGET): $(OBJS) @echo " LD $@" @$(LD) $(LDFLAGS) -o $@ $^ ``` #### 规则:从汇编到目标文件 这条规则说明了怎样把单个汇编文件转成对应的目标文件: ```makefile $(OBJDIR)%.o : $(SRCDIR)%.s @mkdir -p $(OBJDIR) @echo " AS $<" @$(AS) $(ASMFLAGS) -c -o $@ $< ``` #### 清理工作区 提供清理命令删除之前产生的中间产物或成品: ```makefile clean: rm -rf $(OBJDIR) $(BINDIR) ``` 以上就是一个基本框架下的 `Makefile` 实现方案[^2]。当运行 `make all` 后将会依次完成汇编、组装直到最后得到完整的应用程序;而如果只想清除之前的编译成果,则可以通过 `make clean` 达到目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值