安装¶
阅读须知
我们假定用户已经根据《配置操作系统》中的内容安装了 C/C++ 和 Fortran 编译器
gcc
、g++
和gfortran
以及常用命令行工具make
和git
等。修改环境变量时,我们假定用户当前使用的 Shell 是 Bash,且 Bash 配置文件 为
~/.bashrc
。Z Shell (zsh)用户应修改~/.zshrc
。不确定自己当前使用的是何种 Shell 的用户,可检查echo $SHELL
命令的输出。所有软件的安装方式及安装路径,均遵循《文件管理实践经验》和《软件安装实践经验》。
下载:
$ wget http://www.eas.slu.edu/People/LZhu/downloads/gCAP3D1.2.tar
解压:
$ tar -xvf gCAP3D1.2.tar
将解压得到的
gCAP3D
文件夹移至~/src/
目录下:$ mkdir -p ~/src/ $ mv gCAP3D ~/src/
注解
gCAP3D 软件包在发布的时候,遗留了一些无用的临时文件,执行如下命令即可清除:
$ cd ~/src/gCAP3D/ $ rm .gmtcommands4 20080418093700/.gmtcommands4
修改编译文件
gCAP3D1.2(下载于 2021-07-22,软件包中文件的最新日期为 2019-09-17)的
Makefile
存在一些问题,因而需要做一些小修改方可使用。主要修改如下:添加
FC=gfortran
指定使用 gfortran 编译器给
FFLAGS
加上-ffixed-line-length-none
使得 Fortran 一行可以超过 72 字符添加
CC = gcc
指定使用 gcc 编译器添加
SACHOME = /opt/sac
指定 SAC 软件的安装路径,用户需根据自身实际情况设置变量SACHOME
的值变量
SUBS
未指定 Numerical Recipes 相关的一些目标文件名,需在变量SUBS
的赋值语句最后加上:SUBS = fft.o Complex.o radiats.o grid3d.o futterman.o sacio.o trap.o \ nrutil.o jacobi.o eigsrt.o
cap3D
规则中-lsac -lsacio
后加上-lm
cap3D
规则中增加cap_dir
规则,并将cap_dir
加到变量CAP
中,在cap3D
规则后增加cap_dir.o
规则:cap_dir.o: cap3D.c $(COMPILE.c) -DDIRECTIVITY -o $@ $<
clean
规则修改为clean
和distclean
规则,这样可以只删除目标文件,同时保留编译好的二进制命令文件:clean: rm -f *.o distclean: rm -f $(CAP)
注解
为了便于用户使用,我们对相关文件做了以上修改,并提供了 patch 文件,供用户使用。下载 patch 文件
gCAP3D1.2-v20210722.patch
,将其放在 gCAP3D 源码目录下,然后执行如下命令即可修改源码:$ cd ~/src/gCAP3D/ $ patch < gCAP3D1.2-v20210722.patch
注解
我们已经将以上 BUG 报告给原作者,在新版本中这些问题可能会得到修复。
进入源码目录并编译:
$ cd ~/src/gCAP3D/ $ make $ make clean
修改环境变量,将 gCAP3D 路径添加到 PATH 中:
$ echo 'export PATH=${HOME}/src/gCAP3D/:${PATH}'>> ~/.bashrc $ source ~/.bashrc
检查安装是否成功
注解
运行脚本
cap3D.pl
中包含了两个绝对路径,需要根据自身实际情况进行修改后才能成功运行:第 17 行
require "$home/Src/cap/cap_plt.pl";
中cap_plt.pl
的绝对路径需修改为:require "${HOME}/src/gCAP3D/cap_plt.pl";
第 21 行
$green = "$home/data/models/Glib";
中的变量$green
是计算的格林函数库的绝对路径。如果不知道如何修改的话,就直接用默认值,并使用如下命令新建这个目录:$ mkdir -p ~/data/models/Glib
终端键入
cap3D.pl
若出现帮助信息则表示安装成功。
注解
cap_plt.pl
脚本的主要修改是在第 6 行之后加上如下语句:
system "gmtset MEASURE_UNIT inch";
system "gmtset PAGE_ORIENTATION portrait";
第一句设置默认单位为英寸(inch)。Lupei Zhu 的 GMT 版本默认使用了 US 单位制,脚本中所有未显式指定单位的值使用的都是 inch。但是,其他人通常使用的都 是 SI 单位制,会将这些未显式指定单位的值使用默认单位厘米(cm)
第二句设置设置纸张方向为 Portrait 模式