Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
WRF(Weather Research and Forecasting Model)関連。
問題
上記のシステムにてWRFの出力ファイルを処理するシステムをインストールしようとしていた。
Fortran90プログラムをmakeした時に以下のエラーが出ていた。
use netcdf ! netcdf module
1
Fatal Error: Can't open module file 'netcdf.mod' for reading at (1): No such file or directory
make: *** [netcdf_output_mod.o] Error 1
Makefileのデフォルトでは以下となっている。
NETCDF = /usr
...
FFLAGS = -I${NETCDF}/include $(GNU_FFLAGS) $(FPP_FLAGS)
LDFLAGS = -L${NETCDF}/lib $(GNU_LDFLAGS)
netcdf.modとnetcdf.incを検索したところ、以下の場所に見つかった。
/usr/lib64/gfortran/modules/netcdf.mod
/usr/include/netcdf.inc
本来はこれら2つが同じ場所(/usr/include
)にあることでmakeできるのではないかと思う。
対応1 > シンボリックリンクを作る
/usr/include
に移動してシンボリックリンクを貼って対応した。
$ cd /usr/include
$ sudo ln -fs /usr/lib64/gfortran/modules/netcdf.mod .
これでnetcdf.modが見つからないというエラーはなくなり、コンパイルが完了した。
これで問題がないかは様子見をする。
netcdf.modとnetcdf.incが別々の場所にある理由は未消化。WRFのインストールではyumでinstallしただけだったと思う。
他の作業で何か失敗している可能性はある。
参考 http://www.gfd-dennou.org/arch/gtool/gtool4-tools-library/gtool4-tutorial/trmm/doc/netcdf_ifc.html
もしも生成された モジュールファイルが /usr/local/netcdf-ifc/include/ に移動されなかった場合, 主導で移動する.
# cd /usr/local/src/netcdf-3.5.0/src/f90/
# cp NETCDF.mod /usr/local/netcdf/include/
# cp TYPESIZES.mod /usr/local/netcdf/include/
ファイルの場所
https://www.rpmfind.net/linux/RPM/fedora/23/x86_64/n/netcdf-fortran-devel-4.4.2-1.fc23.x86_64.html
を見ると
Files
/usr/bin/nf-config
/usr/include/netcdf.inc
/usr/lib64/gfortran/modules/netcdf.mod
とあり、netcdf.incとnetcdf.modは異なるディレクトリに置かれるようだ。
対応2 > makefileを変更
/usr/includeにシンボリックリンクを貼らない場合。
/usr/lib64/gfortran/modules/にincludeパスが通ればいいので、-I
オプションを追加してもいい。
NETCDFMOD = /usr/lib64/gfortran/modules/
...
FFLAGS = -I${NETCDFMOD} -I${NETCDF}/include $(GNU_FFLAGS) $(FPP_FLAGS)
LDFLAGS = -L${NETCDF}/lib $(GNU_LDFLAGS)
シンボリックリンクを消して、上記のようにNETCDFMOD を追加してコンパイルができるようになった。