LoginSignup
1
1

More than 5 years have passed since last update.

NetCDF > Can't open module file 'netcdf.mod' > /usr/includeにnetcdf.modをシンボリックリンクして対応 / -Iの定義追加で対応

Last updated at Posted at 2016-10-05
動作環境
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 を追加してコンパイルができるようになった。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1