返回

Xcode 15 排除模拟器 arm64 架构导致链接器命令失败怎么办?

IOS

Xcode 15:在为模拟器排除 arm64 架构时修复链接器命令失败

背景

在更新到 Xcode 15 后,许多开发者在为模拟器排除 arm64 架构时遇到了链接器命令失败的问题。这阻止了他们在模拟器上运行他们的应用程序,而 arm64 架构通常对于 M2 芯片的 Mac 来说是必需的。

原因

此问题是由 Xcode 15 中的 linker 更改引起的。以前,可以通过在项目设置中指定“排除架构”来排除特定架构。但是,在 Xcode 15 中,该方法不再起作用,导致了链接器命令失败错误。

解决方案

要解决此问题,需要执行以下步骤:

  1. 在构建设置中排除 arm64 架构
  2. 添加自定义构建脚本
  3. 清理构建文件夹
  4. 重新构建项目

详细步骤

1. 在构建设置中排除 arm64 架构

  • 在 Xcode 中,打开您的项目。
  • 转到“Build Settings”选项卡。
  • 在“搜索框”中输入“Excluded Architectures”。
  • 在“Excluded Architectures”行中,将“arm64”添加到列表中。

2. 添加自定义构建脚本

  • 在“Build Phases”选项卡中,单击“+”按钮,然后选择“New Build Script”。
  • 在“脚本”编辑器中,添加以下脚本:
# Xcode 15 Simulator Linker Fix

# Remove the -force_load flag from the linker arguments for the simulator build
OTHER_LDFLAGS=$(OTHER_LDFLAGS/.*-force_load.*)

  • 确保将脚本添加到“Debug”和“Release”构建配置中。

3. 清理构建文件夹

  • 在终端中,转到您的项目目录。
  • 运行以下命令:
rm -rf ~/Library/Developer/Xcode/DerivedData/*

4. 重新构建项目

  • 在 Xcode 中,单击“Product”菜单,然后选择“Clean Build Folder”。
  • 再次构建项目。

其他注意事项

  • 如果你正在使用 Carthage,还必须排除“arm64”架构。
  • 如果问题仍然存在,请尝试关闭 Xcode,然后重新打开。
  • 如果你仍然遇到问题,请联系 Apple 开发者支持。

常见问题解答

  1. 为什么在 Xcode 15 中需要这些步骤来排除 arm64 架构?

Xcode 15 中的 linker 更改导致了排除架构时出现链接器命令失败错误。因此,需要执行这些步骤来解决该问题。

  1. 为什么无法在构建设置中简单地排除 arm64 架构?

在 Xcode 15 中,仅在构建设置中排除 arm64 架构不再足以解决问题。需要添加自定义构建脚本以进一步修改链接器参数。

  1. 清理构建文件夹是否必要?

清理构建文件夹可以确保 Xcode 从头开始构建项目,从而消除任何潜在的缓存问题。

  1. 如果仍然遇到问题该怎么办?

如果在执行上述步骤后仍然遇到问题,请联系 Apple 开发者支持以获取帮助。

  1. 这些步骤适用于哪些 Xcode 版本?

这些步骤适用于 Xcode 15 及更高版本。