每当我尝试使用任何数组参数时,我都会收到memset()
错误。此外,即使包含标准库,我也无法使用sprintf()
语句,我应该在makefile中包含哪些参数来链接或修复此memset()
和sprintf()
引用错误。
memset()
error full code with lpc214x linker file
我的目标板是LPC2148(基于arm7-TDMA)
这是Makefile
ARMGNU ?= arm-none-eabi
COPS = -Wall -nostdlib -nostartfiles -ffreestanding
all : main.hex main.bin main.elf
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
crt0.o : crt0.S
$(ARMGNU)-gcc -c crt0.S
main.o : main.c
$(ARMGNU)-gcc $(COPS) -c main.c -o main.o
main.elf : lpc2148.ld crt0.o main.o
$(ARMGNU)-ld crt0.o main.o -T lpc2148.ld -o main.elf
main.bin : main.elf
$(ARMGNU)-objcopy main.elf -O binary main.bin
main.hex : main.elf
$(ARMGNU)-objcopy main.elf -O ihex main.hex
答案 0 :(得分:0)
问题是您在链接操作期间使用arm-none-eabi-ld
,无法链接到目标处理器的标准libgcc
。
请修改Makefile
并使用arm-none-eabi-gcc
链接各种目标文件。
因为您正在使用自定义启动文件,您还需要将-nostartfiles
选项传递给链接器。
修改后的Makefile如下:
all : main.hex main.bin main.elf
clean :
rm -f *.o
rm -f *.bin
rm -f *.hex
rm -f *.elf
crt0.o : crt0.S
$(ARMGNU)-gcc -c crt0.S
main.o : main.c
$(ARMGNU)-gcc $(COPS) -c main.c -o main.o
main.elf : lpc2148.ld crt0.o main.o
$(ARMGNU)-gcc crt0.o main.o -T lpc2148.ld -o main.elf -nostartfiles
main.bin : main.elf
$(ARMGNU)-objcopy main.elf -O binary main.bin
main.hex : main.elf
$(ARMGNU)-objcopy main.elf -O ihex main.hex