使用生成文件时出现多个定义错误
multiple definition errors when using makefile
我正在尝试使用以下生成文件构建我的项目:
CC=g++
in=main.cpp
out=analyser
series=Series.o
episode=Episode.o
curlandclean=src/htmlfunctions/curlandclean.cpp
pugilib=src/pugixml/src/pugixml.o
curllib=src/libcurl/src/curl
tidylib=src/tidy/tidy-html5-master/lib/libtidy.a
CFLAGS=-c
C11FLAG=-std=c++11
MTFLAG=-fopenmp -lpthread
$(out): analyser
$(out):$(series) $(episode) curlandclean.o $(curllib) $(tidylib) $(pugilib)
$(CC) $(in) $(series) $(episode) curlandclean.o $(curllib) $(tidylib) $(pugilib) $(C11FLAG) -fopenmp -lpthread -o $(out)
curlandclean.o:$(curlandclean)
$(CC) $(CFLAGS) $(curlandclean)
$(series):src/Series.cpp
$(CC) $(CFLAGS) $(C11FLAG) $(MTFLAG) src/Series.cpp
$(episode):src/Episode.cpp
$(CC) $(CFLAGS) src/Episode.cpp
$(curllib):
cd src/libcurl && ./configure --disable-shared
cd src/libcurl && $(MAKE)
$(pugilib):
cd src/pugixml/src && $(CC) $(CFLAGS) pugixml.cpp
$(tidylib):
cd src/tidy/tidy-html5-master && $(MAKE)
clean:
rm *.o
它进入了最后的链接阶段,但伴随着许多"多重定义错误":
src/libcurl/src/curl: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
src/libcurl/src/curl: In function `data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
我不确定我做错了什么,因为我使用 -c 输出标志编译了我的中间文件。
根据错误消息,我会这样说:
curllib=src/libcurl/src/curl
是一个程序,而不是一个库。 难道不应该是像libcurl.a
这样的东西吗?
相关文章:
- 使用命名空间时出现多个定义错误
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 链接阶段出现多重定义错误
- 避免模板类中的重定义错误
- 即使我没有包含多个文件,C++中的多个定义错误
- 跨多个类的全局变量而不会出现重定义错误?
- 尝试运行 wasm 函数时出现模块未定义错误
- C++ 预期的左大括号以及重定义错误
- C++:成员的越界声明必须是纯虚函数的定义错误
- c++中数组的未定义错误
- Visual C:模板类中的自定义错误消息
- 为什么C++模板不会导致多个定义错误?
- 只有一个定义/声明时标头声明变量的多堆定义错误
- C++ 在多个其他类中使用单个类 - 编译时出现多个定义错误
- 基类未定义.错误 C2504
- Q 斯坦达项重定义错误
- 可视化C++中的结构定义错误
- VC++ C2011 重定义错误 - 未使用的头文件