Linux 编译安装
安装依赖包
编译源码时需要安装若干软件包。
对于 Ubuntu/Debian:
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install libncurses5-dev libsm-dev libice-dev
$ sudo apt install libxpm-dev libx11-dev zlib1g-dev
$ sudo apt install libedit-dev libxml2-dev libcurl4-openssl-dev
对于 CentOS/Fedora/RHEL:
$ # 如果没有 dnf 包管理软件则换为 yum
$ sudo dnf install gcc gcc-c++ make
$ sudo dnf install glibc ncurses-devel libSM-devel libICE-devel
$ sudo dnf install libXpm-devel libX11-devel zlib-devel libedit-devel
$ sudo dnf install libcurl-devel gcc-gfortran
编译源码
小心
Anaconda/Conda 内有软件包和系统软件包冲突,sac 编译的时候需要系统的软件包,所以编译时需要退出 Conda 环境。请多次执行以下命令,直到命令行前面的 (base) 消失:
conda deactivate
将源码按如下命令解压、配置、编译、安装:
$ tar -xvf sac-102.0.tar.gz
$ cd sac-102.0
$ mkdir build
$ cd build
$ # sac 的老代码混合了老的 C 标准(C89/C90/C99),而新版的 GCC 采用了更严格的 C 语言标准(C23 标准)
$ # 因此需要强制指定使用 -std=gnu99 标准,并忽略指针错误
$ ../configure --prefix=/usr/local/sac CFLAGS="-std=gnu99 -g -O2 -Wno-error=incompatible-pointer-types"
$ make
$ sudo make install
配置变量
向 ~/.bashrc[1]中加入如下语句以配置环境变量和 SAC 全局变量:
export SACHOME=/usr/local/sac
export SACAUX=${SACHOME}/aux
export PATH=${SACHOME}/bin:${PATH}
export SAC_DISPLAY_COPYRIGHT=1
export SAC_PPK_LARGE_CROSSHAIRS=1
export SAC_USE_DATABASE=0
其中,
SACHOME定义了 SAC 的安装目录SACAUX定义了 SAC 运行所需的辅助文件所在的目录PATH为 Linux 系统环境变量,使得系统可以正确找到SAC的可执行文件SAC_DISPLAY_COPYRIGHT用于控制是否在启动 SAC 时显示版本和版权信息,一般设置为1。在脚本中多次调用 SAC 时会重复显示版本和版权信息,干扰脚本的正常输出,因而在脚本中一般将其值设置为0。具体的设置方法可以参考 “脚本中调用 SAC” 中的相关内容SAC_PPK_LARGE_CROSSHAIRS用于控制震相拾取过程中光标的大小,在 震相拾取 时会用到SAC_USE_DATABASE用于控制是否允许将 SAC 格式转换为 GSE2.0 格式,一般用不到该特性,故而设置其值为0
修改完 ~/.bashrc 后,执行以下命令使配置的环境变量生效:
$ source ~/.bashrc
启动SAC
终端键入小写的 sac[2],显示如下则表示 SAC 安装成功:
$ sac
SEISMIC ANALYSIS CODE [01/20/2026 (Version 102.0)]
Copyright 1995 Regents of the University of California
SAC>