如何在 M1 Mac 上构建一个静态库,使其支持在 Intel Mac 上的 iOS 模拟器?

6

我有一个体积较大的iOS库,支持真机(arm64...)和Intel Mac上的iOS模拟器(x86_64)。但当我转换到M1 Mac时,遇到了麻烦。

如果我使用旧库,就会失败并显示错误信息:xxx.a(xxx.o)构建于iOS Simulator,但连接在构建于iOS的目标文件中,文件“xxx”适用于架构arm64。看起来我必须构建一个包含不同目标平台二进制文件的xcframework。

因此,我尝试构建不同的切片,并希望将它们捆绑为xcframework。但最后我发现我不知道如何在M1 Mac上构建x86_64切片。

我的问题是:

  • 如何在M1 Mac上构建支持Intel Mac上的iOS模拟器的静态库?
  • 或者从一开始我的想法就错了吗?
1个回答

4

我在M1 Mac上未能获取x86_64切片的原因是我的构建设置中存在一个遗留选项:有效体系结构。

移除此配置并运行标准流程。然后,您将顺利获得包含x86_64架构的库。

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

如果您的库代码不是按照 Xcode 项目组织的,但在 clang 工具链下运行,您可以参考这个链接。简而言之,以类似 arm64-apple-ios14.3-simulator 的格式指定目标即可。

谢谢,我的旧项目也遇到了这个问题!我尝试了很多方法,但是目标通用/平台=IOS模拟器只生成英特尔二进制文件...我从我的project.pbxproj文件中删除了两个实例:["VALID_ARCHS[sdk=iphonesimulator*]" = x86_64;] (整行删除),然后构建命令开始使用x86和ARM二进制文件构建框架。 - Kendall Helmstetter Gelner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接