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