netcdf ビルドログ @ pifront
- 作業日 2021/10/04
- 作業者 高橋芳幸
準備
必要なファイルの取得
必要なファイル
- netcdf
wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.8.0.tar.gz wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-fortran-4.5.3.tar.gz
ビルド
ビルドは ~/tmp/netcdf で行う.
netcdf-c
展開
$ tar xvf netcdf-c-4.8.0.tar.gz $ cd netcdf-c-4.8.0
環境変数の設定, configure, make
$ export NCDIR=$HOME/local/netcdf-c-4.8.0-fortran-4.5.3-cray
$ export CC=cc
$ export CXX=CC
$ export CPP='cc -E'
$ export CXXCPP='CC -E'
$ ./configure --prefix=${NCDIR}
$ make
$ make check
$ make install
netcdf-fortran
展開
$ tar xvf netcdf-fortran-4.5.3.tar.gz $ cd netcdf-fortran-4.5.3
環境変数の設定, configure, make
$ NFDIR=${NCDIR}
$ export LD_LIBRARY_PATH=${NCDIR}/lib:${LD_LIBRARY_PATH}
$ export F77=ftn
$ export FC=ftn
$ export CPPFLAGS="-I${NCDIR}/include"
$ export LDFLAGS="-L${NCDIR}/lib"
$ ./configure --prefix=${NFDIR}
$ make check |& tee make_check.log
エラーが出ちゃった.
libtool: link: ftn -I../fortran -g -O2 -o .libs/f90tst_fill2 f90tst_fill2.o -L/home/G50002/yot/local/netcdf-c-4.8.0-fortran-4.5.3-cray/lib ../fortran/.libs/libnetcdff.so /home/G50002/yot/local/netcdf-c-4.8.0-fortran-4.5.3-cray/lib/libnetcdf.so -lhdf5_hl -lhdf5 -lz -lcurl -ldl -lm -Wl,-rpath -Wl,/home/G50002/yot/local/netcdf-c-4.8.0-fortran-4.5.3-cray/lib ftn -I../fortran -g -O2 -c -o f90tst_vars2.o f90tst_vars2.f90 ftn-3059 crayftn: INTERNAL CHECK$F90TST_VARS2_, File = f90tst_vars2.f90, Line = 5509, Column = 78 Expected no overflow in routine. make[2]: *** [Makefile:909: f90tst_vars2.o] Error 1 make[2]: Leaving directory '/home/G50002/yot/tmp/netcdf/netcdf-fortran-4.5.3/nf03_test4' make[1]: *** [Makefile:1289: check-am] Error 2 make[1]: Leaving directory '/home/G50002/yot/tmp/netcdf/netcdf-fortran-4.5.3/nf03_test4' make: *** [Makefile:581: check-recursive] Error 1
何だこれ.
nf03_test4/Makefile の
f90tst_vars2_SOURCES = f90tst_vars2.f90
をコメントアウトしてみる.
$ make check |& tee make_check.log
だめ.
NC4_F90_TESTS = f90tst_vars f90tst_vars_vlen f90tst_grps f90tst_fill \ f90tst_fill2 f90tst_vars2 f90tst_vars3 f90tst_vars4 f90tst_path \ f90tst_rengrps f90tst_nc4 f90tst_types f90tst_types2
から f90tst_vars2 を消してみる.
$ make check |& tee make_check.log
だめだ.
nf03_test4/Makefile の
f90tst_vars2_SOURCES = f90tst_vars2.f90
をコメントアウトして,
NC4_F90_TESTS = f90tst_vars f90tst_vars_vlen f90tst_grps f90tst_fill \ f90tst_fill2 f90tst_vars2 f90tst_vars3 f90tst_vars4 f90tst_path \ f90tst_rengrps f90tst_nc4 f90tst_types f90tst_types2
から f90tst_vars2 を消してみる.
$ make install |& tee install.log
だめ.
加えて
am_f90tst_vars2_OBJECTS = f90tst_vars2.$(OBJEXT)
f90tst_vars2_OBJECTS = $(am_f90tst_vars2_OBJECTS)
f90tst_vars2_LDADD = $(LDADD)
f90tst_vars2_DEPENDENCIES = ${top_builddir}/fortran/libnetcdff.la
をコメントアウトしてみる.
$ make install |& tee install.log
ダメ.
下もコメントアウト.
f90tst_vars2$(EXEEXT): $(f90tst_vars2_OBJECTS) $(f90tst_vars2_DEPENDENCIES) $(EXTRA_f90tst_vars2_DEPENDENCIES)
@rm -f f90tst_vars2$(EXEEXT)
$(AM_V_FCLD)$(FCLINK) $(f90tst_vars2_OBJECTS) $(f90tst_vars2_LDADD) $(LIBS)
f90tst_vars2.log: f90tst_vars2$(EXEEXT)
@p='f90tst_vars2$(EXEEXT)'; \
b='f90tst_vars2'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
.bashrc の編集
$ emacs -nw ~/.bashrc
export NCDIR=$HOME/local/netcdf-c-4.8.0-fortran-4.5.3-intel-hpe
export LD_LIBRARY_PATH=${NCDIR}/lib:${LD_LIBRARY_PATH}
export PATH=${NCDIR}/bin:${PATH}
参考情報
- https://www.unidata.ucar.edu/software/netcdf/docs/netCDF-CMake.html
- https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html