美文网首页
Mac系统下源码编译安装GMT

Mac系统下源码编译安装GMT

作者: 九天学者 | 来源:发表于2018-12-12 21:29 被阅读43次

    本贴一步一步说明如何在Mac系统下从源码编译安装gmt!对gmt最新功能无感或者没有二次开发意向的同学请飘过!还有其他各种安装方法可供选择,自行Google!

    编译工具

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

    1. gcc/g++: brew install gcc, brew install g++
    2. gfortran: brew install gfortran
    3. make: brew install make
    4. cmake: brew install cmake或者在cmake官网下载二进制安装文件(带GUI界面),双击安装即可!

    接下来就需要根据gmt官方说明首先安装所需的依赖库,包括 netcdf, GDAL, PCRE, BLAS, LAPACK, FFTW。当然了如果目标机器是白纸一张,有可能某些库自身也需要依赖其他库,比如netCDF需要m4, HDF5等,且看下文!

    GMT依赖库

    netcdf

    源码下载地址:netcdf官网github仓库

    netCDF依赖库

    netCDF的依赖库包括m4,HDF5,curl

    m4

    m4可以利用brew自动安装: brew install m4

    安装完成之后有可能需要添加m4的安装路径(xxxx/brew/opt/m4/bin)到PATH环境变量,根据安装最后的消息提示!

    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命令,每次在终端输入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系统下也是一样的操作!

    相关文章

      网友评论

          本文标题:Mac系统下源码编译安装GMT

          本文链接:https://www.haomeiwen.com/subject/cgfrtqtx.html