据我了解,由于重复符号而导致的链接器错误意味着:
- 一个符号在多个源文件中定义
- 编译后在两个不同的目标文件中产生相同的符号
- 因此链接器不知道他应该链接到两个符号中的哪一个。
在尝试从 www.ugfx.io 编译演示项目时,我遇到了此错误:
duplicate symbol _main in:
.build/obj/GFXLIB/demos/modules/gdisp/basics/main.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [.build/demotest.elf] Error 1
与我在网上找到的每个重复符号错误相比,只有一个文件被列为此错误的一部分。而属于这个目标文件的源文件只有一个主要符号。您可以查看here .
我该如何理解这个错误?其原因可能是什么?
最佳答案
当我在编译命令中两次包含相同的源文件时,就发生了这种情况,例如:
$gcc -o main main.c becool.c foo.c bar.c becool.c end.c
重复的 becool.c
导致重复符号错误。
所以,如果这是问题所在,只需检查您的编译命令并删除此类重复项
关于c - 链接器错误: How can there be a duplicate symbol in just one file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566664/