如何解决duplicate cleanersymbols for architecture x86

被这个问题虐了好几小时。
出错原因几乎和他一样,但一直找不到具体在哪:
/questions//duplicate-symbols-for-architecture-i386-and-couldnt-find-same-name-of-class-and
Go to Project Target-& Build Phases-&Look for multiple occurrences of same file under &Compile Sources&. You can search for file name there as well.
Remove multiple occurrences from there.
&此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场
&&&&&&&&&&&&&&&&&&&&&&&&& 19:12:40
软件世界网- &2014 蜀ICP备号 三峰网旗下网站ld: 8 duplicate symbols for architecture x86_64 问题求助_xcode吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:6,345贴子:
ld: 8 duplicate symbols for architecture x86_64 问题求助
本人刚刚涉足osx用终端安装一个软件MEME suite,在make的时候,提示duplicate symbol _mts_lrand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mts_llrand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mts_drand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mts_ldrand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mt_lrand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mt_llrand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mt_drand in:
gomo-gomo.o
gomo-mtwist.oduplicate symbol _mt_ldrand in:
gomo-gomo.o
gomo-mtwist.old: 8 duplicate symbols for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)make[4]: *** [gomo] Error 1make[3]: *** [all-recursive] Error 1make[2]: *** [all] Error 2make[1]: *** [all-recursive] Error 1make: *** [all] Error 2了半天,说是xcode里面的问题,但是我都不知道怎么用xcode,卡在这里一天了,希望有大神能够帮助一下我。。
贴吧热议榜
使用签名档&&
保存至快速回贴iOS开发(39)
先贴一段错误信息
....../Objects-normal/x86_64/XXXX.o(前面太多,就不贴了,看我贴的这些就行)
ld: 5 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
一看错误信息可知是链接错误.
翻译一下,首先可以知道错误信息是在链接XXXX.o时出错的,(.o是链接文件).然后底下的ld:
5 duplicate symbols for architecture x86_64的意思是在x86-64架构下有5个重复符号(几个我们不用管),重复是个关键字,分析有以下两种情况可能会导致这种错误的发生:
一:项目中重复导入了某些文件.,这个一般在导入三方库时可能会重复导入.
解决办法:只需要在文件目录中查找到重复导入的文件,删掉即可,或者将整个三方库删除掉,重新导入,或者用cocopods导入.
二:在项目的某些地方需要#import&XXXX.h&而#import&XXXX.m&.
& &解决办法:认真检查项目,找到错误改正即可.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9113次
排名:千里之外
原创:33篇
转载:49篇
(1)(3)(2)(3)(20)(38)(17)如何解决duplicate symbols for architecture - 滚动_【北京联盟】
如何解决duplicate symbols for architecture
/ 作者:小易
北京联盟摘要:
如何解决duplicate symbols for architecture,上一篇:
下一篇: 。这篇文章讲讲最近碰到的一个问题,还挺有意思的,分享出来给大家看看,日后遇到同样的问题,可以参考文中所述方法进行解决。 一.问题描述 最近在测试SDK的时候碰到这样一个问题,导入开发提测后的lib库后,编译失败了,具体错误如下图所示: 错误原因呢,就
这篇文章讲讲最近碰到的一个问题,还挺有意思的,分享出来给大家看看,日后遇到同样的问题,可以参考文中所述方法进行解决。一.问题描述
最近在测试SDK的时候碰到这样一个问题,导入开发提测后的lib库后,编译失败了,具体错误如下图所示:错误原因呢,就是自己的demo中有一个.o文件和开发提测的包中的.o文件重复了,再具体点就是都包含了解压缩的文件ZipArchive,如下图所示:那既然重复了,你可能会说,把重复的删了就是了,这里我也提供两种方案:(1)在测试工程demo中,将该ZipArchive删掉,但是缺点是你的测试demo中无法使用解压缩功能;(2)对开发提测的lib,将重复的ZipArchive.o删掉,这种方法看起来也挺简单的,但是iOS中的lib是一个.a文件,怎么将其包含的ZipArchive.o删掉,又不会影响到所提测模块的功能呢?二.我的解决方案在这两种解决方案中,我选择了第二种方案,原因是第一种方案中要摒弃掉解压缩功能,然而测试demo这个功能必不可少。下面就来说说如何从.a形式的库文件中删除重复的文件。库文件支持哪些个处理器架构进入lib文件所在目录下,在终端上输入:lipo -info libSOSOMAPAPI_3D.a就能得到该lib所支持的处理器类型,如下图所示:绿框所示即为待测lib所支持的处理器,分别为armv7 arm64。分离库文件,将每个处理器类型对应一个库文件终端输入:lipo -thin arm64 libSOSOMAPAPI_3D.a -output libSOSOMAPAPI_3D_arm64.a执行完后在当前目录下会多一个.a文件,如下图所示:查看分离后的库文件中是否包含待删除的重复文件终端输入:ar -t libSOSOMAPAPI_3D_arm64.a该命令会列出库文件所包含的所有.o文件,当然也包含重复的ZipArchive.o,如下图:新建一个目录,将lib进行解包,然后将重复的ZipArchive.o删除指令如下图所示:之后,就能在所建的目录libSOSOMAPAPI_3D_arm64下看到所有的.o文件,然后rm ZipArchive.o,就将重复的文件删除了。重新组装库文件,也就是将剩余的.o文件再打包成一个完整的lib文件在当前目录下执行:libtool -static *.o -o output ../libSOSOMAPAPI_3D_arm64.a组装后,我们就算是完成对处理器arm64的拆分重组,剩下的还需要对armv7做同样的操作,重复2 3 4 5步即可。将拆分后的arm64和armv7进行合并,生成最终的libSOSOMAPAPI_3D命令:lipo -create libSOSOMAPAPI_3D_arm64.a libSOSOMAPAPI_3D_armv7.a -output libSOSOMAPAPI_3D.a拿到重新生成的libSOSOMAPAPI_3D.a,重新编译下,大功告成~
如何解决duplicate symbols for architecture在我们写代码过程中可能会经常遇到这样一个错误:
仔细读一下报错原因可以发现几个关键词:&duplicate&和&symbols&。
duplicate的中文意思是“重复的、复制的”,而symbols的意思是“符号”。也就是可能在你工程中引入了重复的东西。
我总结了一下,出现duplicate出这个错误一般有两种情况:
& &第一种情况:在工程中重复导入了某一个类或文件,这一般出现在你添加第三方库的时候比较多,在不知道的情况下又导入了一次相同的类。
& &下图中我在工程中新建了一个src的文件夹,把Person类又复制了一遍又添加到工程中去,如图:
这个时候command + B编译之后出现如下错误:
&可以看出来报的还是duplicate的错误,虽然duplicate前边的数字可能不太准确,可是只要你看到duplicate这个关键字就可以去你工程中查找是不是有重复的东西被导入。
&&第二种情况:工程中在#import引入头文件的时候,将#import &XXX.h& 写成了#import &XXX.m&。错误的引入.m头文件&
我工程中有一个Person的类,然后我想在main函数中初始化一个对象,这个时候需要先引入Person类的.h文件。这个时候我引入了.m文件,如图:
& &&command + B 编译之后发现错误,如图:
你会发现还是duplicate这个错误。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5397次
排名:千里之外
原创:13篇
转载:52篇
(3)(1)(4)(10)(10)(5)(4)(3)(26)

我要回帖

更多关于 duplicate 的文章

 

随机推荐