环境背景

•	机器:Apple Silicon(M 系列)
•	系统:macOS
•	目标:安装 FXTSoft(x86_64)
•	已存在:HEASoft(arm64)
•	解决思路:Rosetta + Intel Homebrew + 环境切换

下面是一份**“FXTSoft 在 macOS(Apple Silicon)上成功安装”的精简复盘清单**,按时间顺序 + 关键坑位整理,适合你以后快速查阅或给同组同学参考。


FXTSoft 在 macOS (Apple Silicon) 上安装成功步骤总结


环境背景



一、前置条件(必须)


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 冲突 用函数切换


九、经验总结(关键认知)