【问题标题】:error: unable to load standard library for target 'arm64-apple-ios10.0-simulator'?错误:无法为目标“arm64-apple-ios10.0-simulator”加载标准库?
【发布时间】:2019-01-04 15:16:06
【问题描述】:

我更新了 Xcode,但无法构建。它失败了:

<unknown>:0: error: unable to load standard library for target 'arm64-apple-ios10.0-simulator'

合并脚本:

 # 1
# Set bash script to exit immediately if any commands fail.
set -e

# 2
# Setup some constants for use later on.
FRAMEWORK_NAME="SDK"
OUTPUT_PATH="${SRCROOT}"

# 3
# If remnants from a previous build exist, delete them.
if [ -d "${SRCROOT}/build" ]; then
rm -rf "${SRCROOT}/build"
fi

# 4
# Build the framework for device and for simulator (using
# all needed architectures).
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch 
arm64 -arch armv7 -arch armv7s only_active_arch=no defines_module=yes - 
sdk "iphoneos"
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch 
x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk 
"iphonesimulator"

【问题讨论】:

  • 任何可行的解决方案?

标签: ios swift xcode xcode10


【解决方案1】:

尝试将 iOS 10 模拟器添加到您的 xCode。

【讨论】:

  • 感谢您的提示,但在我的情况下并非如此 .. 我忘了在命令行工具中提到 Xcode10,我们可以在 Xcode->Preferences->Locations Tab 中找到它..在我这样做之后工作正常。
  • @tp2376 您能否取消选中此作为已接受的答案
【解决方案2】:

可能连接到错误的 swift 版本

尝试使用

检查您当前的 swift 包
swiftenv versions

分别使用安装或卸载命令

swiftenv uninstall (install)

要安装swiftenv 使用

brew install kylef/formulae/swiftenv

【讨论】:

    【解决方案3】:

    安装最新的 Xcode 10 GM 种子,面对同样的问题尝试了许多解决方案,但在更新到新的 Xcode 后问题得到解决。如果仍然存在问题,请尝试此转到文件和项目设置,将构建系统设置为旧版构建系统,清理并构建。

    【讨论】:

      【解决方案4】:

      感谢所有答案,但似乎是 Xcode 安装错误 ..我再次下载 Xcode 并测试一切正常。

      【讨论】:

      • 我对此表示怀疑,尝试删除DerivedData 下的所有内容。
      【解决方案5】:

      在我的案例中解决问题的是清除环境。显然,在 Xcode 中运行脚本构建阶段时,设置了一些环境变量可能会干扰 Swift 标准库的解析。我在从 Xcode“运行脚本”阶段执行 carthage 构建时遇到了这个问题。

      通过清除环境来执行命令:

      env -i <command>
      

      您可能希望保留 PATH 和 DEVELOPER_DIR 环境变量,尤其是当您安装了多个 Xcode 版本时。

      在你的情况下

      env -i DEVELOPER_DIR="$DEVELOPER_DIR" PATH="$PATH" xcodebuild ...
      

      【讨论】:

      • 这是我的解决方案,您知道为什么传递到“运行脚本阶段”的环境不再“相同”了吗?为什么我们现在需要手动指定呢?我已经解决了这个问题,但我仍然不知道为什么会这样。这是新构建系统的结果吗? (我不认为它完全在它上面)。
      • 这需要在 Xcode 9 和 Xcode 10 设置的环境之间进行完整的比较,以确定哪个环境变量是罪魁祸首。我没有那样做。我发现虽然在单独的终端中执行相同的命令确实成功了,但我得出了上述结论。
      • 能否请您提供详细的脚本,我可以用于 Xcode 9 和 Xcode 10?
      • Carthage issue on GitHub 中出现了相同的解决方案,但是,使用 env -i 对我来说不是一个选项,因为这也会弄乱我的 git 服务器 SSH 凭据,而我需要 carthage update获取非公共框架。像env CURRENT_ARCH=x86_64 arch=x86_64 "$SRCROOT"/../my_script.sh 这样调用脚本也没有帮助,我仍然得到同样的错误。
      • quoted Carthage GitHub issue 来看,有问题的环境变量似乎是LLVM_TARGET_TRIPLE_SUFFIX。取消设置它为我解决了这个问题(谢谢@DávidPásztor!)。
      【解决方案6】:

      实际上通过在构建而不是模拟器设备时选择Generic iOS Device来解决这个问题。

      编辑:我应该提到,在 Xcode 10 中。

      编辑 2:我将发布我的通用框架脚本

      set -e
      
      ######################
      # Options
      ######################
      
      REVEAL_ARCHIVE_IN_FINDER=true
      
      FRAMEWORK_NAME="${PROJECT_NAME}"
      
      SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"
      
      DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"
      
      UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"
      
      FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"
      
      
      ######################
      # Build Frameworks
      ######################
      
      
      xcodebuild -project ${PROJECT_FILE_PATH} -scheme ${PROJECT_NAME} -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 2>&1
      
      
      xcodebuild -project ${PROJECT_FILE_PATH} -scheme ${PROJECT_NAME} -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 2>&1
      
      
      ######################
      # Create directory for universal
      ######################
      
      rm -rf "${UNIVERSAL_LIBRARY_DIR}"
      
      mkdir "${UNIVERSAL_LIBRARY_DIR}"
      
      mkdir "${FRAMEWORK}"
      
      
      ######################
      # Copy files Framework
      ######################
      
      cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"
      
      
      ######################
      # Make an universal binary
      ######################
      
      lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo
      
      # For Swift framework, Swiftmodule needs to be copied in the universal framework
      if [ -d "${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
      cp -f ${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                            fi
      
                                                                            if [ -d "${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
                                                                            cp -f ${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                            fi
      
                                                                            ######################
                                                                            # On Release, copy the result to release directory
                                                                            ######################
                                                                            OUTPUT_DIR="${PROJECT_DIR}/Output/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"
      
                                                                            rm -rf "$OUTPUT_DIR"
                                                                            mkdir -p "$OUTPUT_DIR"
      
                                                                            cp -r "${FRAMEWORK}" "$OUTPUT_DIR"
      
                                                                            if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then
                                                                            open "${OUTPUT_DIR}/"
                                                                        fi
      

      【讨论】:

      • Xcode 在我身上从 9 -> 10 自动更新,我在实现我的框架时遇到了一个模棱两可的编译错误。按照建议使用“通用 iOS 设备”构建我的框架。
      • 使用“通用 iOS 设备”构建我的框架可以编译,但它不会创建我需要的模拟器存档。有人解决了这个问题吗?
      【解决方案7】:

      重置所有环境变量不是解决方案,因为这也会取消设置 SSH 密钥,如果使用 SSH 身份验证,这将导致克隆失败。

      但是,唯一有问题的环境变量是LLVM_TARGET_TRIPLE_SUFFIX,因此取消设置可以解决问题。

      unset LLVM_TARGET_TRIPLE_SUFFIX
      carthage update 2>&1
      

      【讨论】:

        【解决方案8】:

        对我来说,重启 Xcode 就解决了。

        【讨论】:

        • 这里一样,后台好像更新了一些东西,当我启动 xcode 时,它​​要求安装新组件,说是的,一切都正常了。
        • 重启 XCode 就是这样!对我来说,这个错误是与我通过 Swift 包管理器添加的包一起发生的。
        • 在 M1 上安装 Monterey 和 Xcode 13 并下载 raywenderlich.com/2243-scene-kit-tutorial-getting-started 后,编译出现此错误。删除派生数据,它要求安装新组件。然后它起作用了。
        【解决方案9】:

        我只是随机发生了这个问题。我的代码中没有构建错误。在没有运气切换到新模拟器并清理构建文件夹后,我重新启动了 xCode(11.5),问题自行解决。每当您遇到奇怪的构建失败时,请重新启动 xCode。

        【讨论】:

        • 这是一个被人否决的正确答案。重新启动 Xcode 会导致为 iOS/SDK 更新安装额外的组件,并且当原因与更新有关时,这会消除问题。
        【解决方案10】:

        几天前我遇到了这个问题,所以我所做的是

        • 退出 Xcode
        • 删除派生数据文件夹
        • 启动 Xcode 并进行了干净的构建

        这样做帮助我解决了问题,并且我能够再次运行应用程序

        【讨论】:

          【解决方案11】:

          对我来说,以下解决了这个问题:

          从目标构建设置

          Architectures 设置为 $(NATIVE_ARCH) 并将 $(ARCHS_STANDARD) 添加到 Valid Architectures

          这可能有助于What's the difference between "Architectures" and "Valid Architectures" in Xcode Build Settings?

          【讨论】:

            猜你喜欢
            • 2022-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-10
            • 2020-01-24
            • 2015-11-16
            • 2021-01-10
            相关资源
            最近更新 更多