You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile在链接脚本riscv32i.ld修改后不重新编译,如何添加对应依赖?

Makefile链接脚本依赖配置方案

问题根因

链接脚本riscv32i.ld是生成ELF文件的链接阶段核心输入,但当前Makefile的.elf目标依赖仅包含对应的.o目标,链接脚本没有被纳入依赖检测范围,因此修改链接脚本后make不会触发重新链接流程,后续的hex生成步骤也不会执行。

修改步骤

你只需要调整2处配置即可:

  • 单独定义链接脚本变量,统一维护引用路径,修改CFLAGS引用该变量
  • 给ELF生成规则新增链接脚本作为依赖

修改后的完整Makefile

AS=riscv32-unknown-elf-as
CC=riscv32-unknown-elf-gcc
OC=riscv32-unknown-elf-objcopy
# 新增链接脚本变量定义
LDSCRIPT = riscv32i.ld
# 引用变量替换硬编码的脚本名
CFLAGS=-nostdlib -T $(LDSCRIPT)
MAKEFLAGS += --silent
SOURCES=$(wildcard *.asm)

OBJ=$(patsubst %.asm,%.o, $(SOURCES))
ELF=$(patsubst %.asm,%.elf, $(SOURCES))
HEX=$(patsubst %.asm,%.hex, $(SOURCES))

.PHONY: all clean

all: $(HEX)

$(HEX): %.hex: %.elf
    $(OC) -O binary $< $@

# 给ELF规则新增链接脚本依赖
$(ELF): %.elf: %.o $(LDSCRIPT)
    $(CC) $(CFLAGS) -o $@ $<

$(OBJ): %.o: %.asm
    $(AS) -o $@ $<

clean:
    rm -f *.o *.elf *.hex

修改完成后,只要riscv32i.ld文件发生变更,执行make就会自动触发重新链接、生成hex的全流程。

内容的提问来源于stack exchange,提问作者Plasty Grove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:54:07