How to build NCL and NCAR Graphics from source code
先放一下如何优雅的使用conda安装NCL如果服务器恰好没有连网:
non-optional external softwares:Build NCL with Source Code How to build NCL and NCAR Graphics from source code 先放一下如何优雅的使用conda安装NCL
Installing NCL with “conda”
参考:使用conda安装ncl:
# installconda create -n ncl_stable -c conda-forge nclsource activate ncl_stable# testncl -Vncl $NCARG_ROOT/lib/ncarg/nclex/gsun/gsun02n.nclncl $NCARG_ROOT/lib/ncarg/nclex/nug/NUG_multi_timeseries.ncl
如果是MacOS,可能会遇到X11系列Error。解决方法是下载XQuartz。
如果服务器恰好没有连网: 还没有完全成功,前期的安装package遇到的问题已经解决,没有办法在linux上安装X11,所以不能用example进行验证
因为想要整洁的环境,所以package全部安装在anaconda3目录下面,如果没有anaconda3可以安装在$HOME/local下面
参考:在Linux上手动安装NCL
在$HOME目录下mkdir package_install
将package上传到package_install
JPEG:
wget http://www.ijg.org/files/jpegsr9b.zip #先在本地用wget,再上传到服务器tar -xvf jpegsrc.v9a.tar.gzcd jpeg-9a ./configure --disable-shared --prefix=$HOME/anaconda3make all install
zlib必须要使用1.2.11及以后的版本:
wget https://zlib.net/zlib-1.2.11.tar.gz tar -xvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configure --prefix=$HOME/anaconda3 --staticmake all install
cairo:
# PNGwget http://prdownloads.sourceforge.net/libpng/libpng-1.6.36.tar.gztar -xvf libpng-1.6.36.tar.gz cd libpng-1.6.36/./configure --with-pic --disable-shared --prefix=$HOME/anaconda3 --with-zlib-prefix=$HOME/anaconda3 CPPFLAGS=-I$HOME/anaconda3/include #一定要链接到自己安装的路径makemake check # should be 33/33 passmake install#pkg-configwget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gztar -xvf pkg-config-0.29.tar.gz cd pkg-config-0.29/./configure --prefix=$HOME/anaconda3#FreeTypewget https://sourceforge.net/projects/freetype/files/freetype2/2.9.1/freetype-2.9.1.tar.gztar -xvf freetype-2.9.1.tar.gz cd freetype-2.9.1/./configure --prefix=$HOME/anaconda3 --disable-shared#pixmanwget https://www.cairographics.org/releases/LATEST-pixman-0.38.0tar -xvf pixman-0.38.0.tar.gzcd pixman-0.38.0/./configure --prefix=$HOME/anaconda3make all install#cairowget http://cairographics.org/releases/cairo-1.16.0.tar.xztar -xvf cairo-1.16.0.tar.xzcd cairo-1.16.0//configure --prefix=$HOME/anaconda3 --enable-quartz-font=no --enable-quartz=no --enable-shared=no --enable-static=yes --with-zlib-prefix=$HOME/anaconda3 CPPFLAGS=-I$HOME/anaconda3/includemake all install
pixman/cairo的安装会遇到一些Error:
$PATH/anaconda3/lib/libpng16.a(pngrutil.o): In function png_inflate_claim: $PATH/package_install/libpng-1.6.36/pngrutil.c:429: undefined reference to inflatevalidateor something like undefined reference to inflatevalidate@ZLIB_1.2.9解决方法:检查zlib版本是否为1.2.11及以上,不然会出现错误1;在编译png的时候是否加上--with-zlib-prefix=$HOME/anaconda3 CPPFLAGS=-I$HOME/anaconda3/include,否则会和原本安装在系统中的zlib路径混淆,造成版本错误。
NetCDF:
【记录】在Anaconda(linux)中安装netCDF4库
偷懒了,用了以前安装的netCDF4库,安装路径同样也在anaconda3下面,不知道这个会不会有影响。
HDF-4:
wget https://support.hdfgroup.org/ftp/HDF/HDF_Current/src/hdf-4.2.14.targzip -d hdf-4.2.13.tar.gz tar -xvzf hdf-4.2.13.tarcd hdf-4.2.13//configure --prefix=$HOME/anaconda3 --with-zlib=$HOME/anaconda3 --with-jpeg=$HOME/anaconda3 --disable-netcdfmake all install
Build NCL with Source Code这个方法没有成功的build出ncl,所以选择的是先用source code编译一遍,再把bin替换成precompiled的bin
#download ncl_ncarg-6.6.2.tar.gztar -zxvf ncl_ncarg-6.6.2.tar.gzexport NCARG=/home/usr_name/package_install/ncl_ncarg-6.6.2cd $NCARG/configmake -f Makefile.ini./ymake -config `pwd` #检查ymake里的第一行sch的路径。如果没有sch会报错:bash: ./ymake: /bin/csh: bad interpreter: No such file or directory。
如果更改了ymake中csh的路径,同样要改的还有ldrel, ymkmf, ymake-install, callconv。
grep SYSTEM_INCLUDE Makefile # SYSTEM_INCLUDE = "LINUX" cd $NCARG ./Configure -v # Parent installation directory : /usr/local/ncarg # Enter Return (default), new directory, or q(quit) > $HOME/package_install/ncl_install # Enter local include search path(s) : /usr/X11R6/include # Enter Return (default), new directories, or q(quit) > $HOME/package_install/ncl_install $HOME/anaconda3/include/freetype2 cd $NCARG make Everything >& make-output & tail -f make-output export NCARG_ROOT=$安装ncl的时候选择的路径 export PATH=$NCARG_ROOT/bin:$PATH export MANPATH=$NCARG_ROOT/man:$MANPATH # check ncl -V (目前安装到这一步,6.6.2)
跑example的时候仍然会报错:
这是因为没有X11,选择使用 wks = gsn_open_wks("png","maponly") ; send graphics to PNG file 就不会报错了
warning:Unable to load System Resource File /home/cmx/package_install/ncl_install/lib/ncarg/sysresfile
GKS ERROR NUMBER -208 ISSUED FROM SUBROUTINE GOPWK :
–X driver error: DISPLAY environment variable not set
GKS ERROR NUMBER 25 ISSUED FROM SUBROUTINE GESC :
–SPECIFIED WORKSTATION IS NOT OPEN
fatal:Workstation with PID#8 is not open
fatal:Unable to open Workstation-Can’t Create
fatal:Unable to access object with id:-4
fatal:_NhlCreate:Invalid Parent id #-4
fatal:PID #-4 can’t be found in NhlSetValues
fatal:NhlDraw: Invalid Layer Id: -4
fatal:Unable to update Workstation with PID#-4
fatal:Unable to clear Workstation with PID#-4
fatal:[“Execute.c”:8637]:Execute: Error occurred at or near line 2742 in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl
如果没有办法编译出ncl:
使用precompiled bin替换编译后的ncl package的bin
Installing NCL with precompiled binary