我正在尝试编译源文件,并且我在不存在的目录中遇到了多重定义错误。
以下是这种情况:
这里有什么奇怪之处:</ p>
ERROR:
../util/libname.a(prog.o): In function 'function1':
.../dir_ok/util/prog.c:42: multiple definition of 'function1' // dir_ok exists
../util/libname.a(prog.o): .../dir_foo/util/prog.c:41: first defined here // dir_foo exists, but there is no dir_foo/util.
Makefile:
# Makefile
# Flags
CC = gcc
CFLAGS = -g -Wall -pedantic -std=c11
CLEANLOC=src
#directory names
VPATH = ./:./src/:../util/
UTILDIR = ../util/
UTILFLAG = -llibnameutil
UTILLIB = $(UTILDIR)liblibnameutil.a
UTILC = list of .c, including prog.c that gives the error
UTILH = list of .h, including prog.h that gives the error
EXEC = foo
OBJS = foo.o
SRCS = foo.c, foo.h
.PHONY: all
all: $(EXEC)
$(EXEC): $(OBJS) $(UTILLIB)
$(CC) $(CFLAGS) $^ -o $@ -L$(UTILDIR) $(UTILFLAG)
$(UTILLIB): $(UTILC) $(UTILH)
cd $(UTILDIR); make;
$(OBJS): $(SRCS)
$(CC) $(CFLAGS) -c $^
从概念上讲,这可能是什么问题?如果需要,我愿意发布更多代码。我认为这个问题出现在我的prog1.c中,因为prog2.c和prog3.c在静态库和prog.o下工作正常。
答案 0 :(得分:0)
我明白了。我无法相信我犯了如此微不足道的错误。我的Make:clean命令没有删除该库,它只是一个正在使用的旧库