【问题标题】:How to build a static library on M1 mac that supports iOS simulator on Intel mac?如何在 M1 mac 上构建支持 Intel mac 上的 iOS 模拟器的静态库?
【发布时间】:2021-01-04 14:57:09
【问题描述】:

我有一个胖 iOS 库,它支持真实设备 (arm64...) 和 Intel Mac (x86_64) 的 iOS 模拟器。但是当我切换到 M1 mac 时,事情变得艰难。

如果我使用旧库,我将失败并显示错误消息xxx.a (xxx.o) building for iOS Simulator, but linking in object file built for iOS, file 'xxx' for architecture arm64。看来我必须构建一个包含不同目的地的二进制文件的 xcframework。

所以我尝试构建不同的切片并希望将它们捆绑为一个 xcframework。但我终于发现我不知道如何用 M1 Mac 构建 x86_64 切片。

我的问题是

  • 如何在 M1 mac 上构建支持 Intel Mac 的 iOS 模拟器的静态库?
  • 还是我一开始的想法就错了?

【问题讨论】:

    标签: ios xcode universal-binary apple-silicon apple-m1


    【解决方案1】:

    我未能在 M1 Mac 上获得 x86_64 切片的原因是我的构建设置中有一个旧选项:有效架构。

    删除此配置并运行标准流程。这样你就可以顺利得到包含x86_64架构的库了。

    xcodebuild archive --destination="generic/platform=iOS Simulator" ...
    

    如果您的库代码没有组织为 Xcode 项目,而是在下面使用 clang 工具链。你可以参考这个link。简而言之,以 arm64-apple-ios14.3-simulator 之类的格式指定目标

    【讨论】:

    • 谢谢,我有一个旧项目也有同样的问题!我尝试了很多东西,但目标 generic/platform=IOS Simulator 只生成了一个 intel 二进制文件......我从我的 project.pbxproj 文件中删除了两个实例: ["VALID_ARCHS[sdk=iphonesimulator*]" = x86_64;] (删除了整行)和 build 命令开始使用 x86 和 ARM 二进制文件构建框架。
    猜你喜欢
    • 2021-06-27
    • 2021-03-14
    • 2021-06-04
    • 2017-10-26
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多