計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)

Solaris8 上で NetCDF データ用ツールの ferret 6.6.2 を構築する


注意
  同じ ferret という名前で別のソフトウェアもあり, ここでは, NOAA/PMEL で開発されている, 主に海洋科学で利用されるソフトウェアを言う
  コンパイルには Forte6 の cc, f77, CC コンパイラを使用できるので以下はその手順を示す (コンパイルの前にパスに注意)

ソースのありか
  ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source_v662.tar.gz

他に必要なもの (これらは別途メークしてインストールすること)
  zlib-1.2.3
    ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-1.2.3.tar.gz
    ( CC=cc ./configure --shared; gmake test; gmake install; CC=cc ./configure; gmake test; gmake install; )
  hdf5-1.8.4-patch1
    ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/hdf5-1.8.4-patch1.tar.gz
    インストールマニュアルは release_docs/INSTALL
    ( ./configure --prefix=/usr/local --enable-fortran; gmake; gmake install )
  netcdf-4
    ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.1.1.tar.gz
    ( ./configure --with-hdf5=/usr/local --with-zlib=/usr/local --enable-fortran --enable-netcdf-4; gmake test; gmake install )

ソースの展開
  gtar xvfz fer_source_v662.tar.gz
  cd FERRET

ソースの修正
  xgks/progs/Makefile.in
    LIBS の一行目にある -L$(LIBDIR) -lxgks を削除

  xgks/src/lib/gif.c
    2か所にある下記の定義コードの位置を修正

       FILE *inGif;
       FILE *ouGif;
       gdImagePtr gifImg;

  fmt/src/cd_encode_url.F
    i を INTEGER で定義してやる

  list-2.1/Makefile
    CPP を /usr/lib/cpp -E -P -C に変更

  fmt/cmn/xmachine_byte.cmn
    BYTE active_cpu を INTEGER*1 active_cpu に変更

コンフィギュレーションとコンパイル
  README を読みながら実行していく
  ここでは readline ライブラリは既存のものを使う

  cd xgks
  ./configure
  make

  cd ../list-2.1
  make

  cd ../fer
  platform_specific_flags.mk.solaris8 を以下のように書き換える

----------------------------------------------------------------------
#
# platform_specific_includes.mk.solaris8
#
# This file is included in other Makefiles and defines
# platform specific macros


INCLUDES        = -I/usr/local/include \
		  -I../../xgks/include \
		  -I../../ppl/include/xgks \
                  -I/usr/openwin/include \
		  -I../../xgks/gif \
		  -I../../xgks/ps \
		  -I../../xgks/port \
                  -I../../xgks/src/lib \
                  -I../../xgks/src/lib/gksm \
                  -I$(TMAP_LOCAL)/include \
		  -I/opt/local/include \
                  -I../common \
		  -I../../fmt/cmn \
		  -I../../ppl/include \
		  -I. -I/usr/local/include/readline

FINCLUDES	= -I/usr/local/include -I../../ppl/tmap_inc \
		  -I../include -I../../fmt/cmn \
		  -I../common \
		  -I../../ppl/include -I../../fer/common

GUI_INCLUDES	= -I/usr/dt/include  -I/usr/openwin/share/include

# New platform type var - *kob* 10/01
PLATFORM = Solaris 5.8

CC              = cc
FC		= f77
RANLIB          = /bin/touch
CPP_FLAGS       = -DNO_PASSED_CONCAT -Dcrptd_cat_argument
CFLAGS          = $(CPP_FLAGS) -Dsun -Dsolaris -DUSG -DFULL_GUI_VERSION \
		  -DX_REFRESH -DXT_CODE -DSOLARIS $(INCLUDES) 
FFLAGS          = $(CPP_FLAGS) -e -C \
		  -Dsolaris -DX_REFRESH -DACCEPTS_BYTE_DECLARATION -DNEED_BYTE \
		  -Dxgks -DFlarge_mem -Dreclen_in_bytes $(FINCLUDES) -Dunix \
		  -DNO_OPEN_RECORDTYPE -DNO_INTRINSIC_IN_PARAMETER 
PPLUS_FFLAGS    = -e -Dxgks \
		  -DNO_OPEN_READONLY -DNO_OPEN_CARRIAGECONTROL -Dunix \
		  $(FINCLUDES)

#
# Below this line are macro definitions used only for the final linking of the executable
#

LD		= cc
LDFLAGS		= -L/usr/openwin/lib -z muldefs -v
LD_DYN_FLAGS 	= -G -z text -z muldefs

nsllib = -lnsl
socketlib = -lsocket

SYSLIB		= -lX11 -ldl -L/usr/local/lib -lXpm -lXm -lXt \
		  ../list-2.1/liblist.a \
		  -L/opt/SUNWspro/WS6U2/lib -lV77 -lelf -lM77 -lF77 -lfsu \
		  -lsunmath -lm -lgen -lc -lICE -lSM

TMLIB		= ../lib/tmap_lib.a

READLINELIB	= /usr/local/lib/libreadline.a

GKSLIB		= ../xgks/src/lib/libxgks.a

CDFLIB		= /usr/local/lib/libnetcdf.a \
		  /usr/local/lib/libnetcdf_c++.a \
		  /usr/local/lib/libhdf5_hl.a \
		  /usr/local/lib/libhdf5.a \
		  /usr/local/lib/libz.a \
		  -lc -lm

TERMCAPLIB      = -ltermcap

#
# End of platform_specific_includes.mk.solaris8
#
----------------------------------------------------------------------

  make を実行
    make HOSTTYPE=solaris8 update
    make HOSTTYPE=solaris8

    fer/gnl/special_symbol.F と fer/gnl/initialize.F は
    Fortran95 固有の組み込みサブルーチン CPU_TIME と SYSTEM_CLOCK を
    使っているので この二つだけ fer/gnl にて以下のオプションを指定して
    f95 で再コンパイルする

    -DNO_PASSED_CONCAT -Dcrptd_cat_argument -e -C  -Dsolaris -DX_REFRESH -Dxgks -DFlarge_mem -Dreclen_in_bytes -I/usr/local/include -I../../ppl/tmap_inc  -I../include -I../../fmt/cmn  -I../common  -I../../ppl/include -I../../fer/common -Dunix  -DNO_OPEN_RECORDTYPE -DNO_INTRINSIC_IN_PARAMETER   -c

    もう一度 fer/ にて make HOSTTYPE=solaris8 を実行



計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
海洋大循環分野
daigo@ocg.aori.u-tokyo.ac.jp