macOS Monterey升级后编译Cython出现clang-10链接错误怎么解决
这个报错的核心原因是当前使用的clang-10版本过旧,无法兼容macOS Monterey对应的新版MacOS SDK中的TBD(Text-based Stubs)文件格式,才会出现无法识别!tapi-tbd格式的错误。
解决方法
方法1:升级clang到兼容新版本
优先通过Homebrew安装最新版llvm(包含clang):brew install llvm安装完成后将新版clang写入终端配置文件(/.zshrc或/.bash_profile):
export PATH="/usr/local/opt/llvm/bin:$PATH" export CC="/usr/local/opt/llvm/bin/clang" export CXX="/usr/local/opt/llvm/bin/clang++"执行
source ~/.zshrc(对应zsh终端)或source ~/.bash_profile(对应bash终端)使配置生效,再重新执行python setup.py build_ext --inplace编译命令即可。方法2:修复conda环境下的clang版本问题
如果使用conda虚拟环境,大多是conda内置的clang工具链版本过低导致,执行以下命令升级conda内的clang版本:conda install -c conda-forge clang_osx-64 clangxx_osx-64升级完成后重新编译即可。
方法3:指定兼容的SDK路径
先确保已安装最新版Xcode命令行工具:xcode-select --install编译前临时指定SDKROOT环境变量为最新官方SDK路径:
export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk再执行编译命令即可。
内容的提问来源于stack exchange,提问作者shiva
相关产品推荐
相关产品推荐

