在ubuntu下编译安装gmt

Win10+Ubuntu+GMT

GMT安装方法有好几种:(1)从官方发布的二进制文件安装;(2)在Mac, Linux系统下有自动安装命令;(3)从源码编译安装。第三种方法有利于体验最新版(开发版)的新功能,因为官方发布的稳定版本往往会比开发版晚很多!方便进行同步更新;有利于二次开发,加入自己的功能或者做一定的修改!本帖一步一步说明如何在Ubuntu系统下从源码安装GMT,对于win 10用户,需要开启subsystem下面一步一步展示如何用命令操作,废话不多说,直接上代码!

注意:如果你是Linux 0基础,读起来可能有点费劲

根据gmt官方说明首先安装所需的库

在线视频讲解

编译工具

编译工具包括gcc, g++, gfortran, make, cmake。首先在终端查看诸工具是否已经安装:比如gcc --version,如果没有安装或者不够新,可使用自动安装命令安装之,比如: sudo apt-get install g++

但是CMake貌似不能用apt-get安装,下面给出从源码安装最新版cmake的方法

cmake

  1. 下载
  2. 解压:tar -zxvf cmake-3.13.0-rc1.tar.gz
  3. 配置:make build, cd build, ../configure --prefix=/usr/local
  4. make
  5. make install

安装GMT依赖库

netcdf

github仓库

netCDF依赖库

m4

安装 sudo apt-get install m4

HDF5

  1. 下载
  2. 解压:tar xvf hdf5-1.8.20.tar
  3. configure:mkdir build cd build ../configure --prefix=/usr/local
  4. make
    ... 等待 ....
  5. make install or sudo make install

curl

因为编译netcdf需要用到curl的源码,我喜欢从源码安装。如果后面make netcdf的时候出现错误,可以尝试将从apt-get安装的curl卸载掉:sudo apt-get autoremove curl

  1. 下载
  2. 解压:tar -zxvf curl-7.61.1.tar.gz
  3. config: mkdir build cd build ../configure --prefix=/usr/local
  4. make: make
  5. install: make install

此时如果再不提示缺什么库的话,应该会顺利通过。如果缺什么库,编译过程中会提示缺什么,继续安装所缺库即可

安装netCDF

  1. 解压: tar -zxvf netcdf-4.6.1.tar.gz
  2. mkdir build mkdir bin
  3. cd build
  4. ../configure --prefix=/usr/local 或者其他的什么你想安装到的目录
  5. make
    ... 等待 ...
  6. make install

GDAL

  1. 下载
  2. 解压:tar -zxvf gdal-2.3.2.tar.gz
  3. config: cd gdal-2.3.2 ../configure --prefix=/usr/local 注意:直接在主目录下面配置和make,不要创建build目录,不然会出现没有make目标的错误。
  4. make: make
    此过程等待时间非常长....
  5. install: make install

PCRE

  1. 下载
  2. 解压:tar -zxvf pcre-8.42.tar.gz
  3. config: mkdir build cd build ../configure --prefix=/usr/local
  4. make: make
  5. install: make install

出现了几个警告:libtool: warning: relinking 'libpcreposix.la', libtool: warning: relinking 'libpcrecpp.la'先不管

BLAS

  1. 下载
  2. 解压:tar -zxvf blas-3.8.0.tgz
  3. 编译生成libblas.so:gfortran -shared -O2 *.f -o libblas.so -fPIC
  4. 添加环境变量到~/.zshrc: export LIBPATH=/mnt/d/Research/gmt/library/BLAS-3.8.0/libblas.so:$LIBPATH

LAPACK

  1. 下载
  2. 解压:tar -zxvf lapack-3.8.0.tar.gz
  3. 拷贝make.inc:cp make.inc.example make.inc
  4. 添加-fPICOPTSNOOPT
OPTS    = -O2 -frecursive -fPIC
DRVOPTS = $(OPTS)
NOOPT   = -O0 -frecursive -fPIC
  1. 修改lib名称
BLASLIB = ../../librefblas.so
LAPACKLIB = liblapack.so
  1. 修改SRC/makefile
../$(LAPACKLIB): $(ALLOBJ)
    $(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
    $(RANLIB) $@

改为

../$(LAPACKLIB): $(ALLOBJ)
    $(LOADER) $(LOADOPTS) -shared -Wl,-soname,liblapack.so -o $@ $(ALLOBJ) ../librefblas.so
  1. 修改BLAS/SRC/Makefile
$(BLASLIB): $(ALLOBJ)
    $(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
    $(RANLIB) $@

改为

$(BLASLIB): $(ALLOBJ)
    $(LOADER) $(LOADOPTS) -z muldefs -shared -Wl,-soname,librefblas.so -o $@ $(ALLOBJ)

如果你没有g77编译器,请将第2步拷贝的make.inc文件中的两个g77更换为你的fortran编译器比如gfortran

  1. make
make blaslib
make lapacklib
  1. 添加环境变量: 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

  1. 下载
  2. 解压:tar -zxvf fftw-3.3.8.tar.gz
  3. 配置:make build, cd build, ../configure --prefix=/usr/local
  4. make
  5. make install

Ghostscript

sudo apt-get update
sudo apt-get install ghostscript

配置数据

下载

  1. GSHHG
  2. DCW-GMT

设置路径: 环境变量

  1. GSHHG_PATH
  2. DCW_PATH

编译gmt

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j

保持与官方仓库同步更新(针对二次开发者)

主要的命令列举如下

  • 查看目前的远程仓库地址: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

如果发现在终端不能直接用gmt命令,每次在终端输入gmt会出现这个错误: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系统下也是一样的操作!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容