【发布时间】:2014-08-03 10:02:23
【问题描述】:
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 中发生了什么?
【问题讨论】: