Итак, я программирую программу, которая настолько разрослась, что я решил создать много файлов для этого проекта (как я делал раньше). После создания 2 файлов и помещения в них соответствующих функций я получаю эти ошибки при создании.
/bin/ld: src/util.o:(.data.rel.local+0x0): multiple definition of `fnames'; src/main.o:(.data.rel.local+0x0): first defined here
/bin/ld: src/util.o:(.data+0x0): multiple definition of `gBoard'; src/main.o:(.data+0x0): first defined here
/bin/ld: src/possiblemoves.o:(.data.rel.local+0x0): multiple definition of `fnames'; src/main.o:(.data.rel.local+0x0): first defined here
/bin/ld: src/possiblemoves.o:(.data+0x0): multiple definition of `gBoard'; src/main.o:(.data+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:22: vgcp] Error 1
Вот мой Makefile:
IDIR=/usr/include/SDL2
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=src
LIBS=-lSDL2 -lSDL2_image
_DEPS = main.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = main.o util.o possiblemoves.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
all: vgcp clean
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
vgcp: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o