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>