GMT安裝方法有好幾種:(1)從官方發(fā)布的二進制文件安裝盅粪;(2)在Mac, Linux系統(tǒng)下有自動安裝命令;(3)從源碼編譯安裝感挥。第三種方法有利于體驗最新版(開發(fā)版)的新功能盯腌,因為官方發(fā)布的穩(wěn)定版本往往會比開發(fā)版晚很多!方便進行同步更新圣蝎;有利于二次開發(fā),加入自己的功能或者做一定的修改衡瓶!本帖一步一步說明如何在Ubuntu系統(tǒng)下從源碼安裝GMT徘公,對于win 10用戶,需要開啟subsystem哮针!下面一步一步展示如何用命令操作关面,廢話不多說,直接上代碼十厢!
注意:如果你是Linux 0基礎(chǔ)等太,讀起來可能有點費勁
根據(jù)gmt官方說明首先安裝所需的庫
編譯工具
編譯工具包括gcc, g++, gfortran, make, cmake。首先在終端查看諸工具是否已經(jīng)安裝:比如gcc --version
蛮放,如果沒有安裝或者不夠新缩抡,可使用自動安裝命令安裝之,比如: sudo apt-get install g++
包颁。
但是CMake貌似不能用apt-get安裝缝其,下面給出從源碼安裝最新版cmake的方法
cmake
- 下載
- 解壓:
tar -zxvf cmake-3.13.0-rc1.tar.gz
- 配置:
make build
,cd build
,../configure --prefix=/usr/local
make
make install
安裝GMT依賴庫
netcdf
netCDF依賴庫
m4
安裝 sudo apt-get install m4
HDF5
- 下載
- 解壓:
tar xvf hdf5-1.8.20.tar
- configure:
mkdir build
cd build
../configure --prefix=/usr/local
-
make
... 等待 .... -
make install
orsudo make install
curl
因為編譯netcdf需要用到curl的源碼,我喜歡從源碼安裝徘六。如果后面make netcdf的時候出現(xiàn)錯誤,可以嘗試將從apt-get安裝的curl卸載掉:
sudo apt-get autoremove curl
- 下載
- 解壓:
tar -zxvf curl-7.61.1.tar.gz
- config:
mkdir build
cd build
../configure --prefix=/usr/local
- make:
make
- install:
make install
此時如果再不提示缺什么庫的話榴都,應(yīng)該會順利通過待锈。如果缺什么庫,編譯過程中會提示缺什么嘴高,繼續(xù)安裝所缺庫即可
安裝netCDF
- 解壓:
tar -zxvf netcdf-4.6.1.tar.gz
-
mkdir build
mkdir bin
cd build
-
../configure --prefix=/usr/local
或者其他的什么你想安裝到的目錄 -
make
... 等待 ... make install
GDAL
- 下載
- 解壓:
tar -zxvf gdal-2.3.2.tar.gz
- config:
cd gdal-2.3.2
../configure --prefix=/usr/local
注意:直接在主目錄下面配置和make竿音,不要創(chuàng)建build目錄和屎,不然會出現(xiàn)沒有make目標的錯誤。 - make:
make
此過程等待時間非常長.... - install:
make install
PCRE
- 下載
- 解壓:
tar -zxvf pcre-8.42.tar.gz
- config:
mkdir build
cd build
../configure --prefix=/usr/local
- make:
make
- install:
make install
出現(xiàn)了幾個警告:
libtool: warning: relinking 'libpcreposix.la'
,libtool: warning: relinking 'libpcrecpp.la'
先不管
BLAS
- 下載
- 解壓:
tar -zxvf blas-3.8.0.tgz
- 編譯生成libblas.so:
gfortran -shared -O2 *.f -o libblas.so -fPIC
- 添加環(huán)境變量到
~/.zshrc
:export LIBPATH=/mnt/d/Research/gmt/library/BLAS-3.8.0/libblas.so:$LIBPATH
LAPACK
- 下載
- 解壓:
tar -zxvf lapack-3.8.0.tar.gz
- 拷貝make.inc:
cp make.inc.example make.inc
- 添加
-fPIC
到OPTS
和NOOPT
OPTS = -O2 -frecursive -fPIC
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC
- 修改lib名稱
BLASLIB = ../../librefblas.so
LAPACKLIB = liblapack.so
- 修改SRC/makefile
將
../$(LAPACKLIB): $(ALLOBJ)
$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
$(RANLIB) $@
改為
../$(LAPACKLIB): $(ALLOBJ)
$(LOADER) $(LOADOPTS) -shared -Wl,-soname,liblapack.so -o $@ $(ALLOBJ) ../librefblas.so
- 修改BLAS/SRC/Makefile
將
$(BLASLIB): $(ALLOBJ)
$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
$(RANLIB) $@
改為
$(BLASLIB): $(ALLOBJ)
$(LOADER) $(LOADOPTS) -z muldefs -shared -Wl,-soname,librefblas.so -o $@ $(ALLOBJ)
如果你沒有g(shù)77編譯器春瞬,請將第2步拷貝的make.inc文件中的兩個
g77
更換為你的fortran編譯器比如gfortran
- make
make blaslib
make lapacklib
- 添加環(huán)境變量:
export LIBPATH=/mnt/d/Research/gmt/library/BLAS-3.8.0/libblas.so:/mnt/d/Research/gmt/library/lapack-3.8.0/liblapack.so:$LIBPATH
安裝OpenMP庫
sudo apt-get install libomp-dev
FFTW
- 下載
- 解壓:
tar -zxvf fftw-3.3.8.tar.gz
- 配置:
make build
,cd build
,../configure --prefix=/usr/local
make
make install
Ghostscript
sudo apt-get update
sudo apt-get install ghostscript
配置數(shù)據(jù)
下載
設(shè)置路徑: 環(huán)境變量
GSHHG_PATH
DCW_PATH
編譯gmt
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j
保持與官方倉庫同步更新(針對二次開發(fā)者)
主要的命令列舉如下
- 查看目前的遠程倉庫地址:
git remote -v
- 添加官方倉庫:
git remote add upstream https://github.com/GenericMappingTools/gmt.git
其中upstream是官方倉庫柴信,orgin是你fock之后存在你自己的github賬戶里的倉庫 - 拉取官方倉庫更新:
git fetch upstream
- 切換到自己的分支,比如master:
git checkout master
- 與官方更新合并:
git merge upstream/master
- 修改遠程push倉庫地址:
git remote set-url origin xxxx.git
- 刪除遠程倉庫地址:
git remote rm origin
如果發(fā)現(xiàn)在終端不能直接用
gmt
命令宽气,每次在終端輸入gmt會出現(xiàn)這個錯誤:fatal: Not a git repository (or any of the parent directories): .git
随常,那是因為安裝了git的插件的原因。一般這個是由于on my zsh引起的萄涯,gmt這個詞被定義為了 alias g./home/zguo/.oh-my-zsh/plugins/git/git绪氛,定義的文件為:/home/zguo/.oh-my-zsh/plugins/git/git.plugin.zsh
,找到這個文件打開之后把這一行注釋掉涝影,然后重新source一下或者重新打開一下終端就好了枣察。
Mac系統(tǒng)下也是一樣的操作!