错误:无法为目标“arm64-apple-ios10.0-simulator”加载标准库?

30

我更新了我的Xcode但无法构建。它失败并显示以下错误:

<未知>:0: 错误:无法为目标'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"

有任何解决方案吗? - akshay bhange
12个回答

35

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


5
我也是,似乎有些后台更新了,当我启动Xcode时,它要求安装新组件,我选择了“是”,然后一切又恢复正常了。 - Albert James Teddy
重启XCode吧!对我来说,这个错误是和我通过Swift Package Manager添加的一个包结合使用时出现的。 - Dennis Stücken
在M1上安装了Monterey和Xcode 13后,下载https://www.raywenderlich.com/2243-scene-kit-tutorial-getting-started,并编译时出现错误。删除派生数据后,它要求安装新的组件。然后就工作了。 - Allen King

27

在构建时选择通用iOS设备而不是模拟器设备,即可解决此问题。

编辑:我应该提到,在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

1
Xcode自动更新了从9到10,当我实现我的框架时,我遇到了一个模棱两可的编译错误。使用“通用iOS设备”构建我的框架可以解决这个问题。 - Kilo Loco
1
使用“通用 iOS 设备”编译我的框架可以通过,但它无法创建我需要的模拟器存档。有人解决了这个问题吗? - jaumevn
我还注意到我们有不同的选项:“任何iOS设备”/“任何iOS模拟器设备”/“任何Mac(Mac Catalyst)”。对于我的情况,我能够使用“任何Mac(Mac Catalyst)”进行构建。 - zuyao88

9

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

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

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


8
在我的情况下解决问题的方法是清除环境。显然,当在Xcode中运行脚本构建阶段时,会设置一些环境变量,这些变量可能会干扰Swift标准库的解析。我在从Xcode的“Run Script”阶段执行carthage build时遇到了这个问题。
通过清除环境来执行命令:
env -i <command>

如果你安装了多个Xcode版本,你可能希望保留PATH和DEVELOPER_DIR环境变量。

因此,在你的情况下:

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

1
需要对Xcode 9和Xcode 10设置的环境进行全面比较,才能确定到底是哪个环境变量导致了问题。我没有这样做。但我发现在单独的终端中执行相同的命令成功了,这让我得出了上述结论。 - Werner Altewischer
1
请问您能否提供详细的脚本,使我可以在Xcode 9和Xcode 10中使用? - Dhruv
1
相同的解决方案在 GitHub 上的 Carthage 问题 中出现过,但是对我来说使用 env -i 不是一个选项,因为它也会搞乱我的 git 服务器 SSH 凭据,而我需要这些凭据来获取非公共框架的 carthage update。像 env CURRENT_ARCH=x86_64 arch=x86_64 "$SRCROOT"/../my_script.sh 这样调用脚本也没有帮助,我仍然得到相同的错误。 - Dávid Pásztor
另一个选项可能是生成一个新的登录 shell:您可以通过在脚本的 shebang 行中指定 --login 来实现这一点,例如:#!/bin/bash --login - Werner Altewischer
3
根据引用的Carthage GitHub问题,存在问题的环境变量似乎是“LLVM_TARGET_TRIPLE_SUFFIX”。取消设置它对我解决了这个问题(谢谢@DávidPásztor!)。 - theRealRobG
显示剩余2条评论

8

针对新版本的Xcode,请尝试通过Rosetta打开Xcode。

在应用程序文件夹中右键单击Xcode->获取信息->将“使用Rosetta打开”设置为true。

enter image description here


命令CompileSwiftSources发出错误,但未返回非零退出代码以指示失败。 无法为目标“arm64-apple-ios10.3”加载标准库。构建失败了,遇到了上述问题。通过执行以下步骤解决:应用程序->xcode->检查使用Rosetta打开->清除构建并重新构建。 - Ashi
是的,这个对我起作用了,谢谢啊。 - igneosaur

7
我刚才遇到了这个问题,它是突然发生的。我的代码中没有构建错误。在切换到新模拟器并且清理构建文件夹后仍然不行,我重启了Xcode(11.5),问题自行解决。每当您遇到奇怪的编译错误时,请尝试重新启动Xcode。

2
这是一个正确的答案,但被某人点了踩。重新启动Xcode会安装iOS/SDK更新的其他组件,如果问题与更新有关,则可以解决该问题。 - Totoro

2

0

可能与错误的Swift版本有关

请尝试使用以下命令检查您当前的Swift软件包:

swiftenv versions

分别使用安装或卸载命令

swiftenv uninstall (install)

安装 swiftenv 的方法如下:

brew install kylef/formulae/swiftenv

0

感谢所有的回答,但似乎这是Xcode安装的问题...我重新下载了Xcode并测试了一切,在我的情况下都正常工作。


2
我对此表示怀疑,请尝试删除DerivedData下的所有内容。 - Boris Y.

0
尝试将iOS 10模拟器添加到您的xCode中。 在此输入图像描述


1
谢谢你的提示,但在我的情况下不是那样的。我忘了在Xcode->首选项->位置选项卡中找到命令行工具中的Xcode10..在我这样做之后,它就正常工作了。 - tp2376
@tp2376,你能否取消这个答案的采纳? - Boris Y.

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