計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
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 を実行
計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)