You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Sonoma系统gfortran编译出现collect2: ld返回1错误的解决求助

解决gfortran在Sonoma下链接libSystem.tbd的错误

核心原因

你使用的gfortran 13.2.0自带的链接器版本过旧,不支持Xcode 15+引入的新TAPI格式(!tapi-tbd),而CommandLineTools 15.3的SDK已采用该新格式,导致链接阶段失败。

解决方案

方案1:显式指定使用Apple clang的链接器

编译时强制调用系统自带的兼容链接器,执行命令:

gfortran TEST_1_fortran_only_fixed.f -fuse-ld=/usr/bin/ld

若生效,可将参数写入shell配置文件避免重复输入:

# zsh用户
echo 'export FCFLAGS="-fuse-ld=/usr/bin/ld"' >> ~/.zshrc
source ~/.zshrc

# bash用户
echo 'export FCFLAGS="-fuse-ld=/usr/bin/ld"' >> ~/.bash_profile
source ~/.bash_profile

方案2:降级CommandLineTools到14.x版本

Xcode 14系列的SDK仍使用旧版TBD格式,与gfortran 13.2.0兼容:

  1. 备份当前CommandLineTools目录:
sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools_15.3_backup
  1. 安装Xcode 14.x对应的CommandLineTools(如14.3.1版本)
  2. 确认路径指向:
xcode-select -p

输出应为/Library/Developer/CommandLineTools

方案3:通过Homebrew重新安装gcc(含兼容版gfortran)

你之前尝试过brew安装,但可能未正确替换手动安装的版本:

  1. 卸载手动安装的gfortran:
sudo rm -rf /usr/local/gfortran
sudo rm /usr/local/bin/gfortran
  1. 重新安装gcc(brew提供的版本适配Sonoma架构和SDK):
brew reinstall gcc
  1. 为brew的gfortran创建全局软链接(版本号以实际安装为准):
ln -s /usr/local/bin/gfortran-14 /usr/local/bin/gfortran

执行gfortran -v验证,应显示brew提供的gcc版本信息。

方案4:指定编译时使用旧版SDK

若不想降级工具链,可强制指定旧版SDK路径:

gfortran TEST_1_fortran_only_fixed.f --sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk

注:此方法可能引发其他兼容性问题,仅作为备选。

验证方式

编译完成后执行生成的可执行文件:

./a.out

若能正常运行,说明问题已解决。

内容的提问来源于stack exchange,提问作者user23826167

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:42:21