我在尝试创建 Makefile 时遇到问题。我只想一个一个地创建 .elf 文件,然后是转储文件,最后是 bin 文件,然后使用 python 脚本将其转换为 .hex 文件。我的目标是仅使用 make 命令实际创建 .elf 和 .hex 文件。
尽管如此,因为我对 Makefiles 非常陌生,所以在执行 make 命令后出现错误:
make
test
make: *** [copy.hex] Error 1
先感谢您!
XLEN ?= 32
RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf-
RISCV_GCC ?= $(RISCV_PREFIX)gcc
CFLAGS = -O2
./configure --prefix=/home/opt/Risc_V/my_tests --with-arch=rv32if --with-abi=ilp32d
SCRIPTDIR=/home/opt/Risc_V/tools/
RISCV_TEST_DIR=/home/opt/Risc_V/my_tests/my_software
PROGRAMS ?= copy.c
ALL_HEX = $(PROGRAMS:%.c=%.hex)
PWD := $(shell pwd)
all: $(ALL_HEX) $(PROGRAMS)
RISCV_OPTIONS ?= -o $(PROGRAMS).elf $(CFLAGS)
RISCV_LINK ?= $(RISCV_GCC) $(PROGRAMS) $(RISCV_OPTIONS)#produces .elf file!
RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump -D $(PROGRAMS).elf > $(PROGRAMS).dump#produces a dump file to see the assembly code!
RISCV_OBJCOPY ?= $(RISCV_PREFIX)objcopy -O binary $(PROGRAMS).elf $(PROGRAMS).bin#produces a bin file!
test: all
%.elf: %.c
$(RISCV_LINK)
%.bin: %.elf
$(RISCV_OBJDUMP)
%.dump: %.elf
$(RISV_OBJCOPY)
%.hex: %.bin $(SCRIPTDIR)/bin2hex.py
test
test: $(SCRIPTDIR)/bin2hex.py
python $(SCRIPTDIR)/bin2hex.py $(PROGRAMS).bin -a 0x0 > $(PROGRAMS).hex || exit -1
clean:
rm -rf *.elf *.hex *.map *.objdump *.i *.s *.bin *.dump