首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接器错误- clang++

链接器错误- clang++
EN

Stack Overflow用户
提问于 2015-09-22 18:03:40
回答 1查看 145关注 0票数 0

我有一个链接错误,我很难理解。以下是错误消息:

代码语言:javascript
复制
duplicate symbol _main in:
objs/MyFile.o
/var/folders/h7/f0t4_h4130bcvkjm7ms7y9_w0000gp/T/MyFile-f334a7.o
ld: 1 duplicate symbol for architecture x86_64

一开始,在四处寻找答案之后,我想我可能不小心在头文件中声明了什么。我继续并删除了我自己的所有头文件,但我仍然得到错误。

再加上错误消息中的两个文件并不都是/var/folder文件,就像许多标头声明中的错误一样,这让我觉得这可能与我的Makefile有关,我最近一直在使用这个文件。

下面是Makefile:

代码语言:javascript
复制
CXX = clang++
LDFLAGS = -lm -lxml2

SRCDIR  = src
OBJDIR = objs
SOURCES = $(wildcard src/*.cc)
HEADERS = $(wildcard src/*.h)

OBJECTS = $(patsubst src/%.cc,$(OBJDIR)/%.o,$(SOURCES))

objs/%.o : src/%.cc
        @echo "Building object $@"
        @$(CXX) $(CXXFLAGS) -o $@ -c $<

TARGETS = src/MyFile

default: $(TARGETS)

src/MyFile: $(OBJECTS)
                $(CXX) $(CXXFLAGS) -o $@ -I $^ $(LDFLAGS) src/MyFile.cc

Makefile.dependencies:: $(SOURCES) $(HEADERS)
                $(CXX) $(CXXFLAGS) -MM $(SOURCES) > Makefile.dependencies

-include Makefile.dependencies

.PHONY: clean spartan

clean:
                @rm -f $(TARGETS) $(OBJECTS) core Makefile.dependencies
spartan: clean
                @rm -f *~ .*~

任何和所有的帮助,在找出什么可能导致这一点是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 19:50:45

概述

我不明白这一行,认为它会导致错误:

代码语言:javascript
复制
$(CXX) $(CXXFLAGS) -o $@ -I $^ $(LDFLAGS) src/MyFile.cc

首先,-I $^没有多大意义,因为-I后面应该是包含目录路径,您可能希望它是-I . $^

其次,您不需要src/MyFile.cc,因为它应该以objs/MyFile.o的形式出现在$(OBJECTS)中。

解决方案

将链接器命令更改为此应该会有所帮助:

代码语言:javascript
复制
$(CXX) $(CXXFLAGS) -o $@ -I . $^ $(LDFLAGS)

发生了什么

最后一个链接命令看起来类似于:

代码语言:javascript
复制
compiler file.o file.cpp

编译器驱动程序(此处为clang++)在参数列表中查看源文件,并将其编译为将输出放入临时文件(此处为/var/folders/h7/f0t4_h4130bcvkjm7ms7y9_w0000gp/T/MyFile-f334a7.o),而实际的链接命令如下:

代码语言:javascript
复制
linker file.o differently/named/file.o

因此,重复符号错误:链接器的参数列表中有两个相同源文件的对象文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32723809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档