我有一个使用Legacy
构建位置(File->Project Settings->Advanced
)的XCode 4项目。
该项目有三个目标。静态库A
使用静态库B
,然后链接到使用的应用C
。
我利用此问题的要点(Build fat static library (device + simulator) using Xcode and SDK 4+)构建了A
和B
的通用静态库,然后他们又lipo
&#39 ; d成.a
中链接的一个C
。一切都很精彩。
最近,我通过将Build Location
设置为DerivedData中的XCode默认值进行迁移(实验),我的应用程序C
已经开始出现与A
中定义的对象相关的链接器错误。由于我已经验证正确创建了胖库,因此非常混乱。
是否有其他警告要转移到我应该注意的XCode默认值?
更新
使用图片进行更新。选择Legacy
后,一切都很顺利。使用Xcode Default
,我收到链接器错误。此设置甚至不存储在您的项目中,因此我必须确保构建此项目的所有机器都使用该设置。我不了解此设置与链接器错误之间的相关性。还有其他人遇到过这个吗?
更新2
我发现这与我在库A
中捆绑到B
的方式有关。我以下列方式使用libtool
。
libtool -static -o superlib.a out/*.a
此命令成功,但生成的.a
未与应用程序正确链接。如果我将所有out/*.a
文件与应用程序独立链接,则可以正常工作。还有Legacy
构建位置,superlib.a
工作正常。
令人费解。