从源码中编译安装gmt官方开发版(优先体验最新功能)

简介: 一步一步解释在ubuntu系统下如何从github源码仓库中编译安装gmt (generic mapping tools),文中有详细的编译安装命令,同时也配有亲自操作的演示视频!从源码安装,提前体验gmt最新功能并修改和添加自己的功能!从这里可以体验gmt组新版gmt 6.

gmt: generic mapping tools是一个通用绘图工具,绘制曲线图和地形图、世界地图或者区域地图方面表现极其优秀!这是地球科学领域享有盛名的绘图工具,其安装有两种方式:
(1)从官方发布的二进制文件安装;
(2)从github仓库直接clone,然后自己编译安装。
第二种方式的好处是可以保持与官方团队开发版同样的更新度(比如现在官方发布的版本是5.X,从源码安装可以提前使用6.0版本的modern功能)并且可以自己二次开发加入自己想要的功能,比如修改官方版本中三维显示的bug这篇文章。当然了要想提前享受更新的功能和自己修改功能,必须要付出点代价了,就是安装稍微有点点复杂。但是,所有的步骤都详细的列在这里了,如果还是看不懂或者不想看,那就看下面的视频,是我的操作录屏!

gmt


视频频道:Youtube

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

前戏:安装所需库

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

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

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

  1. 查看目前的远程仓库地址:git remote -v
  2. 添加官方仓库:git remote add upstream https://github.com/GenericMappingTools/gmt.git
    其中upstream是官方仓库,orgin是你fock之后存在你自己的github账户里的仓库
  3. 拉取官方仓库更新:git fetch upstream
  4. 切换到自己的分支,比如master:git checkout master
  5. 与官方更新合并:git merge upstream/master
  6. 修改远程push仓库地址:git remote set-url origin xxxx.git
  7. 删除远程仓库地址:git remote rm origin

如果发现在终端不能直接用gmt命令,那是因为安装了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一下或者重新打开一下终端就好了。

相关文章
|
安全 关系型数据库 MySQL
MySQL数据库高效秘籍:10个小技巧,让你轻松应对各种场景!
【8月更文挑战第25天】本文介绍了十个提升MySQL数据库效率与安全性的实用技巧。涵盖查询性能分析、索引优化、慢查询日志利用、图形化工具如MySQL Workbench的应用、性能分析工具、主从复制实现、备份与恢复策略、数据库迁移方法及安全性保障等多个方面。通过具体的示例代码展示每个技巧的实际操作方式,帮助读者深入理解并有效运用MySQL数据库。
572 0
|
JSON Java Linux
07-PDI(Kettle)源码编译8.2.0.0.R版本
文章目录 07-PDI(Kettle)源码编译8.2.0.0.R版本 1.安装PDI8.2.0.0.R的parent工程到本地 1.1配置Maven的settings.xml文件 1.2安装PDI源码依赖的parent工程到本地仓库
07-PDI(Kettle)源码编译8.2.0.0.R版本
|
6月前
|
人工智能 Linux iOS开发
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
OpenUtau是一款开源的歌声合成工具,兼容UTAU音源库和重采样器,支持多语言界面及预渲染功能,让音乐创作更加高效便捷。
1278 15
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
|
12月前
|
数据采集 数据挖掘 数据处理
Python 删除存在特定内容的行
Python 删除存在特定内容的行
269 1
halcon算子模板匹配(一)基于形状的模板匹配
halcon算子模板匹配(一)基于形状的模板匹配
3034 0
|
数据采集 Web App开发 API
虾皮(Shopee)商品详情数据接口详解
虾皮(Shopee)是东南亚与台湾领先的电商市场,为买卖双方搭建桥梁。本文介绍如何利用网页爬虫技术获取商品详情数据,适用于无API访问权限的情况。通过Python的`requests`和`beautifulsoup4`库,可从网页中提取信息。首先需安装上述库,然后使用示例代码发送HTTP请求并解析HTML。注意遵守虾皮的服务条款,应对可能的动态内容和反爬虫措施。对于API需求,建议查阅官方文档。
453 3
成功解决:CentOS7中无法连接网络
这篇文章介绍了如何解决CentOS 7虚拟机无法连接网络的问题。作者猜测问题可能是由于虚拟机软件的网关和CentOS 7系统的网关不一致导致的。文章提供了两种解决方案:修改虚拟网络编辑器的网关或修改CentOS系统的网关和IP地址。作者选择了后者,并演示了如何在CentOS终端中以root用户身份修改IP和网关。
成功解决:CentOS7中无法连接网络
|
编解码 定位技术
Cesium案例解析(七)——Layers在线地图服务
Cesium案例解析(七)——Layers在线地图服务
245 0
|
缓存 Java 数据库连接
MyBatis三级缓存实战:高级缓存策略的实现与应用
MyBatis三级缓存实战:高级缓存策略的实现与应用
300 0
MyBatis三级缓存实战:高级缓存策略的实现与应用