我试图创建的Makefile有问题。我只想一个接一个地创建.elf文件,然后是dump文件,最后是bin文件,然后用python脚本将其转换为.hex文件。 我的目标是使用make命令实际创建.elf和.hex文件
尽管如此,因为我对makefile非常陌生,所以在执行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
你怎么知道你“使用了每条规则上的标签”?仅按键盘上的TAB键是不够的:您必须确保在按TAB键时编辑器确实插入了一个TAB字符,并且当编辑器写出文件时,它会在写入的文件中保留TAB字符(某些编辑器在保存文件时会“帮助”重设空白)
然而,这很可能不是问题所在,因为如上所述,您实际上还没有向我们展示完整的makefile,并且我们不知道makefile的第30行中发生错误的地方是什么。这可能是一些完全不同的语法错误。在SO上提问并包含文件的一部分是没有意义的,但是省略了发生错误的实际行。你说“它们大多是路径等”,但显然
make
认为它们有问题,所以你必须向我们展示它们,否则我们帮不了你我要说的是,您的makefile中还有其他各种错误(但这些不是您在此处引用的问题的原因):
这些不应该使用
$$
。如果要展开这些变量,它们应该分别为$(RISCV_LINK)
、$(RISCV_OBJDUMP)
和$(RISCV_OBJCOPY)
您缺少这里的参数:这应该是
$(SCRIPTDIR)
。您所拥有的与此等价:$(S)CRIPTDIR
这不是您想要的相关问题 更多 >
编程相关推荐