各位大侠,小弟有一个工程,文件包括ctr0.S; MiniIO.h; MiniIO.C;IOTest.C;
我在MiniIO.C中定义了一个数组arKeyIOCon[6],然后在该文件的某个IO操作函数中调用该数组。
接下来,我在IOTest.C的Main函数中调用了MiniIO.C中的IO操作函数,编译器报错如下:
******************************************************************************************
make all
ARM-elf-ld -Ttext 0x00000000 crt0.o MiniIO.o IOTest.o -o IOTest_elf
IOTest.o:(.data+0x0): mul
tiple definition of `arKeyIOCon'
MiniIO.o:(.data+0x0): first defined here
make: *** [all] Error 1
******************************************************************************************
我不是很明白,我的头文件中都有#ifndef这样的预编译指令,为什么还会出现重复定义的情况呢?这个问题要如何解决?
我的MAKEFILE文件如下:
CFLAGS := -Wall -Wstrict-prototypes -g -fomit-frame-pointer -ffreestanding
OBJS := crt0.o MiniIO.o IOTest.o
AIM_ELF := IOTest_elf
AIM_BIN := IOTest.bin
AIM_DIS := IOTest.dis
all : $(OBJS)
arm-elf-ld -Ttext 0x00000000 $(OBJS) -o $(AIM_ELF)
arm-elf-objcopy -O binary -S $(AIM_ELF) $(AIM_BIN)
arm-elf-objdump -D -m arm $(AIM_ELF) > $(AIM_DIS)
%.o:%.c
arm-elf-gcc -Wall -O2 -c -o $@ $<
%.o:%.S
arm-elf-gcc -Wall -O2 -c -o $@ $<
工程代码已上传,还请各位大哥帮忙,不胜感激!
0