How to build NCL and NCAR Graphics from source code
先放一下如何优雅的使用conda安装NCL
Installing NCL with “conda” 参考:使用conda安装ncl:
conda create -n ncl_stable -c conda-forge ncl
source activate ncl_stable
ncl -V
ncl $NCARG_ROOT/lib/ncarg/nclex/gsun/gsun02n.ncl
ncl $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
non-optional external softwares:
wget http://www.ijg.org/files/jpegsr9b.zip
tar -xvf jpegsrc.v9a.tar.gz
cd jpeg-9a
./configure --disable-shared --prefix=$HOME/anaconda3
make all install
wget https://zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/anaconda3 --static
make all install
wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.36.tar.gz
tar -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
make
make check
make install
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz
tar -xvf pkg-config-0.29.tar.gz
cd pkg-config-0.29/
./configure --prefix=$HOME/anaconda3
wget https://sourceforge.net/projects/freetype/files/freetype2/2.9.1/freetype-2.9.1.tar.gz
tar -xvf freetype-2.9.1.tar.gz
cd freetype-2.9.1/
./configure --prefix=$HOME/anaconda3 --disable-shared
wget https://www.cairographics.org/releases/LATEST-pixman-0.38.0
tar -xvf pixman-0.38.0.tar.gz
cd pixman-0.38.0/
./configure --prefix=$HOME/anaconda3
make all install
wget http://cairographics.org/releases/cairo-1.16.0.tar.xz
tar -xvf cairo-1.16.0.tar.xz
cd 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/include
make 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 inflateValidate - or 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路径混淆,造成版本错误。
【记录】在Anaconda(linux)中安装netCDF4库 偷懒了,用了以前安装的netCDF4库,安装路径同样也在anaconda3下面,不知道这个会不会有影响。
wget https://support.hdfgroup.org/ftp/HDF/HDF_Current/src/hdf-4.2.14.tar
gzip -d hdf-4.2.13.tar.gz
tar -xvzf hdf-4.2.13.tar
cd hdf-4.2.13/
/configure --prefix=$HOME/anaconda3 --with-zlib=$HOME/anaconda3 --with-jpeg=$HOME/anaconda3 --disable-netcdf
make all install
Build NCL with Source Code
这个方法没有成功的build出ncl,所以选择的是先用source code编译一遍,再把bin替换成precompiled的bin
tar -zxvf ncl_ncarg-6.6.2.tar.gz
export NCARG=/home/usr_name/package_install/ncl_ncarg-6.6.2
cd $NCARG/config
make -f Makefile.ini
./ymake -config `pwd`
如果更改了ymake中csh的路径,同样要改的还有ldrel, ymkmf, ymake-install, callconv 。
grep SYSTEM_INCLUDE Makefile
cd $NCARG
./Configure -v
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
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
|