【问题标题】:Makefile doesn't recompile when linker script changes链接描述文件更改时 Makefile 不会重新编译
【发布时间】:2021-11-05 00:04:36
【问题描述】:

我有一个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

【问题讨论】:

    标签: gcc makefile


    【解决方案1】:

    好吧,我是个白痴。只需将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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2011-12-10
      • 2014-05-03
      相关资源
      最近更新 更多