链接描述文件更改时 Makefile 不会重新编译

Makefile doesn't recompile when linker script changes

我有一个Makefile如下。当链接描述文件 riscv32i.ld 更改时,make 不会重新编译程序。我需要做什么来添加对该文件的依赖?

AS=riscv32-unknown-elf-as
CC=riscv32-unknown-elf-gcc
OC=riscv32-unknown-elf-objcopy
CFLAGS=-nostdlib -T riscv32i.ld
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: %.o
    $(CC) $(CFLAGS) -o $@ $<

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

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

好吧我是个白痴。只需添加 riscv32i.ld 作为 $(ELF) 的先决条件即可:

AS=riscv32-unknown-elf-as
CC=riscv32-unknown-elf-gcc
OC=riscv32-unknown-elf-objcopy
CFLAGS=-nostdlib -T riscv32i.ld
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: %.o riscv32i.ld
    $(CC) $(CFLAGS) -o $@ $<

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

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