我有一个 Xcode 项目,它有一个“主”静态库目标,其中包含/链接到其他 Xcode 项目中的一堆其他静态库。
构建“Optimized (armv6 armv7)”的主库目标时,在最后阶段的 CreateUniversalBinary 步骤中发生错误。对于主库包含的库的每个 .o 文件,都会报告以下错误(例如 FBConnectGlobal.o 文件):
warning for architecture: armv6 same member name (FBConnectGlobal.o)
in output file used for input files: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv6/libMTToolbox.a(FBConnectGlobal.o)
and: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv7/libMTToolbox.a(FBConnectGlobal.o)
due to use of basename, truncation and blank padding
最后,Xcode 告知构建成功。但是,当在应用程序项目中使用最终静态库时,它不会构建,因为它在构建的一部分 (armv6) 中发现了重复的符号,而在构建的另一部分 (armv7) 中丢失了符号。
有什么想法可以解决这个问题吗?
中号
最佳答案
我认为这根本不是答案。如果你没有两种架构,它完全可以工作。在链接中给出的示例中,可以将库 a、b 和 c 链接到一个库中,并与其链接。
Carl 遇到的问题是库中有两种不同的体系结构(arm6 和 arm7),并且链接器无法正确解析它们。
我发现了问题。据我所知,这是 libtool 中的一个错误。请参阅我的帖子以获取解决方案:
https://binaryfinery.wordpress.com/2010/06/11/universal-static-library-problem-in-iphone-sdk/
关于iphone - 为armv6和armv7构建iPhone静态库,其中包括另一个静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456795/