MacOS Monterey下Fortran编译失败:ld报'tapi-tbd'不支持错误
解决MacOS Monterey下gfortran编译libSystem.tbd的tapi-tbd错误
针对你遇到的ld: unsupported tapi file type '!tapi-tbd'链接错误,以下是几个未尝试过的可行解决思路:
指定兼容的旧版本SDK编译
查找系统中已安装的MacOSX11.x系列SDK(如MacOSX11.7.sdk),编译时通过-isysroot参数强制指定该SDK路径,同时明确架构:gfortran -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.7.sdk -arch x86_64 Testing_Fortran.f90 -o Testing_Fortran若系统无旧版SDK,可从Apple开发者平台下载适配Monterey的旧SDK包安装后重试。
替换gfortran使用的链接器
Homebrew安装的gcc自带独立的ld链接器,编译时显式指定该链接器路径(先通过brew info gcc确认实际路径):gfortran -fuse-ld=/usr/local/opt/gcc/bin/x86_64-apple-darwin21-ld Testing_Fortran.f90 -o Testing_Fortran该链接器对Monterey的tbd格式兼容性更好。
通过环境变量切换编译环境
编译前设置环境变量,强制工具链使用兼容的SDK和库路径:export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.7.sdk export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH gfortran Testing_Fortran.f90 -o Testing_Fortran重装适配Monterey的gcc版本
彻底卸载现有gcc后,安装对Monterey兼容性更优的gcc@11版本:# 卸载现有gcc brew uninstall --force gcc brew cleanup # 安装gcc@11 brew install gcc@11 # 使用对应版本的gfortran编译 gfortran-11 Testing_Fortran.f90 -o Testing_Fortran
内容的提问来源于stack exchange,提问作者DdDani20
相关产品推荐
相关产品推荐

