【问题标题】:universal IOS static library with i386 x86_64 armv7 armv7s arm64带有 i386 x86_64 armv7 armv7s arm64 的通用 IOS 静态库
【发布时间】:2015-10-12 04:43:54
【问题描述】:

我需要创建一个 Cocoa Touch 静态库项目的通用库,

我正在使用

xcodebuild -target mysdsk ONLY_ACTIVE_ARCH=NO VALID_ARCHS="arm64 armv7 armv7s i386 x86_64" -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

即使我将 iphonesimulator 拆分为两个 xcodebuild,我仍然无法为 iphone4 simuator 获得 i386

我遇到错误

Undefined symbols for architecture i386

基于How do I determine the target architecture of static library (.a) on Mac OS X?

我尝试运行文件命令,它显示

mysdsk.a: Mach-O universal binary with 5 architectures
mysdsk.a (for architecture i386): current ar archive random library
mysdsk.a (for architecture armv7): current ar archive random library
mysdsk.a (for architecture armv7s): current ar archive random library
mysdsk.a (for architecture x86_64): current ar archive random library
mysdsk.a (for architecture arm64): current ar archive random library

但我仍然遇到错误

Undefined symbols for architecture i386

【问题讨论】:

    标签: ios xcode6 static-libraries cross-compiling


    【解决方案1】:

    无论你采用什么方法,从架构列表中我认为一切都很好。

    XCode 存在一个问题,即使您拖放 mysdsk.a 或更改链接器设置,XCode 仍然可以选择存储在其中的错误文件

    /Users/<your username>/Library/Developer/Xcode/DerivedData/mysdsk_........ folder
    

    您可以从 XCode 警告中识别出 3 个切片,但实际上是 5 个切片

    ld:警告:忽略文件 /Users//Library/Developer/Xcode/DerivedData/mysdsk_......./../mysdsk.a,文件 /Users//Library 中缺少所需的体系结构 i386 /Developer/Xcode/DerivedData/mysdsk_......./../mysdsk.a(3片)

    因此删除文件夹/Users//Library/Developer/Xcode/DerivedData/mysdsk_........

    那么它应该可以正常工作,实际上我发现了另一个机器可以正常工作但我的机器无法正常工作的问题。

    参考ignoring file [path] missing required architecture i386 in file

    【讨论】:

    • 发现很有用,但似乎有点解决办法,我会尝试
    • 实际上我对这个解决方法有点怀疑,但解决方案解决了我的问题,我接受这个作为答案,如果可能,如果苹果开发者论坛已经解决了这个问题,请提供正确的错误/问题位置
    猜你喜欢
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2012-01-09
    • 2019-01-11
    相关资源
    最近更新 更多