环境背景
• 机器:Apple Silicon(M 系列)
• 系统:macOS
• 目标:安装 FXTSoft(x86_64)
• 已存在:HEASoft(arm64)
• 解决思路:Rosetta + Intel Homebrew + 环境切换
下面是一份**“FXTSoft 在 macOS(Apple Silicon)上成功安装”的精简复盘清单**,按时间顺序 + 关键坑位整理,适合你以后快速查阅或给同组同学参考。
FXTSoft 在 macOS (Apple Silicon) 上安装成功步骤总结
环境背景
-
机器:Apple Silicon(M 系列)
-
系统:macOS
-
目标:安装 FXTSoft(x86_64)
-
已存在:HEASoft(arm64)
-
解决思路:Rosetta + Intel Homebrew + 环境切换
一、前置条件(必须)
1️⃣ 安装 Xcode Command Line Tools
xcode-select --install
2️⃣ 安装 Rosetta(x86_64 支持)
softwareupdate --install-rosetta --agree-to-license
二、准备 x86_64 编译环境
3️⃣ 安装 Intel Homebrew(/usr/local)
arch -x86_64 /bin/bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
4️⃣ 用 Intel brew 安装 gcc / gfortran
arch -x86_64 /usr/local/bin/brew install gcc libyaml
三、关键环境变量(编译前)
⚠️ 非常重要:必须在 x86_64 shell 中操作
arch -x86_64 /bin/bash
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
hash -r
5️⃣ 解决 gfortran 架构冲突
export FC=/usr/local/bin/gfortran
❌ 不能使用 /opt/homebrew/bin/gfortran-14(arm64)
四、解决 macOS 链接错误(核心坑)
6️⃣ 指定 macOS SDK(否则 libSystem 找不到)
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
export CFLAGS="-isysroot $SDKROOT"
export CXXFLAGS="-isysroot $SDKROOT"
export FCFLAGS="-isysroot $SDKROOT"
export LDFLAGS="-Wl,-syslibroot,$SDKROOT"
7️⃣ 确保 gfortran 运行库可被链接
GFLIBDIR="$(dirname "$(gfortran -print-file-name=libgfortran.dylib)")"
QMLIBDIR="$(dirname "$(gfortran -print-file-name=libquadmath.dylib)")"
export LDFLAGS="$LDFLAGS -L$GFLIBDIR -Wl,-rpath,$GFLIBDIR"
export LDFLAGS="$LDFLAGS -L$QMLIBDIR -Wl,-rpath,$QMLIBDIR"
五、编译 FXTSoft
8️⃣ 解压源码
tar zxvf fxtsoft.tar.gz
cd fxtsoftv1.20
9️⃣ 清理并配置
rm -rf BUILD_DIR/*
cd BUILD_DIR
./configure --prefix=/Users/btwang/workshop/applications/fxtsoft
若 configure 成功,会看到:
config.status: creating headas-setup
Finished
🔟 编译与安装
make -j$(sysctl -n hw.ncpu)
make install
成功标志:
Finished make install
六、运行时环境(避免与 HEASoft 冲突)
11️⃣ 安装目录结构
/Users/btwang/workshop/applications/fxtsoft/
└── x86_64-apple-darwin25.2.0/
12️⃣ FXTSoft 专用 CALDB
/Users/btwang/workshop/applications/fxtsoft/CALDB_v1.21
七、最终环境切换方案(推荐)
在
~/.zshrc
中定义
heasoft # 激活 HEASoft (arm64)
fxtsoft # 激活 FXTSoft (x86_64)
heaoff # 清空 HEASARC 环境
(完整 .zshrc 见你上一条确认版本)
八、常见错误与对应修复
| 错误信息 | 原因 | 解决 |
|---|---|---|
| gfortran unusable | arm64 / x86_64 混用 | 用 /usr/local/bin/gfortran |
| library 'System' not found | 未设置 SDKROOT | -isysroot $SDKROOT |
| AST configure failed | Fortran 链接失败 | 加 libgfortran / libquadmath |
| HEASoft / FXTSoft 混乱 | HEADAS/CALDB 冲突 | 用函数切换 |
九、经验总结(关键认知)
-
Apple Silicon ≠ Intel
-
HEASoft ≠ FXTSoft(即使同属 HEASARC 体系)
-
永远不要在一个 shell 里 source 两个 headas-init.sh
-
FXTSoft 在 macOS 上必须用 Rosetta(x86_64)