AFAIK,较旧版本的Xcode如果链接了多次,则无法链接静态库.我认为存在一种重复的目标文件或符号问题.
最近,我意识到Xcode5不再在静态库的重复链接上报告相关错误.这是我的测试.
>我写了3个Objective-C类,在单独的项目中分别命名为s1,s2,s3.
>每个都被编译成s1.o,s2.o,s3.o,
>并最终存档到s1.a,s2.a,s3.a.
> s2与s1链接(合并),而s3与s2和s1链接(合并).
终于我得到了这些.a文件.
Eonil$ar -tv libs1.a
rw-r--r-- 501/20 64 Aug 3 18:38 2014 __.SYMDEF SORTED
rw-r--r-- 501/20 5528 Aug 3 18:38 2014 s1.o
Eonil$ar -tv libs2.a
rw-r--r-- 501/20 120 Aug 3 18:38 2014 __.SYMDEF SORTED
rw-r--r-- 501/20 5872 Aug 3 18:38 2014 s2.o
rw-r--r-- 501/20 5528 Aug 3 18:38 2014 s1.o
Eonil$ar -tv libs3.a
rw-r--r-- 501/20 224 Aug 3 18:38 2014 __.SYMDEF
rw-r--r-- 501/20 5872 Aug 3 18:38 2014 s3.o
rw-r--r-- 501/20 5528 Aug 3 18:38 2014 s1.o
rw-r--r-- 501/20 5872 Aug 3 18:38 2014 s2.o
rw-r--r-- 501/20 5528 Aug 3 18:38 2014 s1.o
那些相同的.o文件都是重复的.
我编写了一个p1项目,该项目是命令行可执行文件,并将其与所有s1.a,s2.a,s3.a链接.我预计会有一些复制错误,但它只是构建并运行良好!
这些重复的静态库链接在Xcode中发生了什么?