本貼一步一步說(shuō)明如何在Mac系統(tǒng)下從源碼編譯安裝gmt!對(duì)gmt最新功能無(wú)感或者沒(méi)有二次開(kāi)發(fā)意向的同學(xué)請(qǐng)飄過(guò)淮椰!還有其他各種安裝方法可供選擇忱反,自行Google纠修!
編譯工具
編譯工具包括gcc, g++, gfortran, make, cmake巾乳。首先在終端查看諸工具是否已經(jīng)安裝:比如gcc --version
您没,如果沒(méi)有安裝或者不夠新,下面是自動(dòng)安裝命令
- gcc/g++:
brew install gcc
,brew install g++
- gfortran:
brew install gfortran
- make:
brew install make
- cmake:
brew install cmake
或者在cmake官網(wǎng)下載二進(jìn)制安裝文件(帶GUI界面)胆绊,雙擊安裝即可氨鹏!
接下來(lái)就需要根據(jù)gmt官方說(shuō)明首先安裝所需的依賴(lài)庫(kù),包括 netcdf, GDAL, PCRE, BLAS, LAPACK, FFTW压状。當(dāng)然了如果目標(biāo)機(jī)器是白紙一張仆抵,有可能某些庫(kù)自身也需要依賴(lài)其他庫(kù),比如netCDF需要m4, HDF5等,且看下文镣丑!
GMT依賴(lài)庫(kù)
netcdf
源碼下載地址:netcdf官網(wǎng)舔糖;github倉(cāng)庫(kù)
netCDF依賴(lài)庫(kù)
netCDF的依賴(lài)庫(kù)包括m4,HDF5莺匠,curl
m4
m4可以利用brew自動(dòng)安裝: brew install m4
安裝完成之后有可能需要添加m4的安裝路徑(
xxxx/brew/opt/m4/bin
)到PATH
環(huán)境變量金吗,根據(jù)安裝最后的消息提示!
HDF5
- 下載
- 解壓:
tar xvf hdf5-1.8.20.tar
- configure:
mkdir build
cd build
../configure --prefix=/usr/local
-
make
... 等待 .... -
make install
orsudo make install
curl
因?yàn)榫幾gnetcdf需要用到curl的源碼,我喜歡從源碼安裝慨蛙。如果后面make netcdf的時(shí)候出現(xiàn)錯(cuò)誤,可以嘗試將從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
此時(shí)如果再不提示缺什么庫(kù)的話纪挎,應(yīng)該會(huì)順利通過(guò)期贫。如果缺什么庫(kù),編譯過(guò)程中會(huì)提示缺什么异袄,繼續(xù)安裝所缺庫(kù)即可
安裝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通砍,不要?jiǎng)?chuàng)建build目錄,不然會(huì)出現(xiàn)沒(méi)有make目標(biāo)的錯(cuò)誤烤蜕。 - make:
make
此過(guò)程等待時(shí)間非常長(zhǎng).... - 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)了幾個(gè)警告:
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名稱(chēng)
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)
如果你沒(méi)有g(shù)77編譯器封孙,請(qǐng)將第2步拷貝的make.inc文件中的兩個(gè)
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庫(kù)
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
保持與官方倉(cāng)庫(kù)同步更新(針對(duì)二次開(kāi)發(fā)者)
- 查看目前的遠(yuǎn)程倉(cāng)庫(kù)地址:
git remote -v
- 添加官方倉(cāng)庫(kù):
git remote add upstream https://github.com/GenericMappingTools/gmt.git
其中upstream是官方倉(cāng)庫(kù),orgin是你fock之后存在你自己的github賬戶(hù)里的倉(cāng)庫(kù) - 拉取官方倉(cāng)庫(kù)更新:
git fetch upstream
- 切換到自己的分支讽营,比如master:
git checkout master
- 與官方更新合并:
git merge upstream/master
- 修改遠(yuǎn)程push倉(cāng)庫(kù)地址:
git remote set-url origin xxxx.git
- 刪除遠(yuǎn)程倉(cāng)庫(kù)地址:
git remote rm origin
如果發(fā)現(xiàn)在終端不能直接用
gmt
命令虎忌,每次在終端輸入gmt會(huì)出現(xiàn)這個(gè)錯(cuò)誤:fatal: Not a git repository (or any of the parent directories): .git
,那是因?yàn)榘惭b了git的插件的原因橱鹏。一般這個(gè)是由于on my zsh引起的膜蠢,gmt這個(gè)詞被定義為了 alias g./home/zguo/.oh-my-zsh/plugins/git/git,定義的文件為:/home/zguo/.oh-my-zsh/plugins/git/git.plugin.zsh
莉兰,找到這個(gè)文件打開(kāi)之后把這一行注釋掉挑围,然后重新source一下或者重新打開(kāi)一下終端就好了。
Mac系統(tǒng)下也是一樣的操作糖荒!