NetCDFのインストール

注意点

個人で使う PC なら通常 /usr/local/ や の中にインストールするが,こうすると root 権限で make を行う必要がある.
このため,環境変数が root でも適切に設定されているかを事前に確認しておく.
特に .bashrc でパスの追加をしている場合は,root の .bashrc でも同様のことをしておかないとエラーが出る可能性がある.
インストール前に root で ifort が実行できるか(パスが通っているか)まず確認する.

また,依存関係エラーの可能性を高めるので,バージョン更新は慎重に.
NetCDF4 のライブラリを使用するソフトウェア(例えば GMT )は,場合によっては更新した NetCDF4 のパスを元に再度インストールする必要がある.

NetCDF4

環境変数

インストールを行う前に,環境に合わせてコンパイラを指定する.
GNU (gfortran, gcc)を使うのであれば,

export FC=gfortran
export CC=gcc

PGI なら

export FC=pgf90
export CC=pgcc

Intel なら

export FC=ifort
export CC=icc # icc で実行可能かは未確認


NetCDF4 のインストールには,事前にHDF5のインストールがされていることが必須.
パスが設定されていないと configure の時点で失敗するので,echo で確認するなどして,なければ環境変数にパスを追加する.
HDF5 が/home/miyashita/local/src/hdf5 にあるとして,(ユーザーはrootで)

export CPATH=$HOME/local/src/hdf5/include:$CPATH
export LD_LIBRARY_PATH=$HOME/local/src/hdf5/lib:$LD_LIBRARY_PATH



NetCDF-C

NetCDF Downloadsのページでソースをダウンロードする(例えば.tar.gz).

tar -zxf netcdf-c-4.X.X
cd netcdf-c-4.X.X

または,GitHub からリポジトリをクローンする.ただしこれは容量がでかいのでバージョンの tag を指定してダウンロードの方が良い.

git clone https://github.com/Unidata/netcdf-c
cd netcdf-c
git checkout v4.6.0

更新の時は

git checkout v4.6.1

とする.

export NCDIR=$HOME/local/src/netcdf-c-4.X.X
./configure --prefix=${NCDIR} --enable-shared

NetCDF4 の configure は --with-xxx= のようなオプションが少ない.
事前にインストールしておいた HDF5 や SZIP などのライブラリが参照可能なように環境変数を設定しておく必要がある.
特にHDF5については --with-hdf5 というオプションは configure になさそうだし, 自分で LDFLAGS や CFLAGS を設定してもうまいこといかないことが多い.
configure 後に下記のようなエラーが出ている時は HDF5 を見つけられていないとき.

checking for library containing H5Fflush... no
configure: error: Can't find or link to the hdf5 library. Use --disable-hdf5, or see config.log for errors.

うまくいかないときは, pkg-config を使って場所を指定する.

CFLAGS="`pkg-config --cflags hdf5`" LDFLAGS="`pkg-config --libs-only-L hdf5`" ./configure --prefix=${NCDIR} --enable-shared

pkg-config の hdf5 を有効にするには,環境変数 PKG_CONFIG_PATH の中に hdf5.pc のファイルがあるディレクトリ(/hogehoge/lib/pkgconfig)が入ってないといけない.
configure が成功したらコンパイル.

make
make check
make install

インストール先を /usr/ などの root しか権限がない場所に指定している場合は sudo install する.

  • エラーその1
    laptop では build(make) の際にエラーになった.エラー内容は以下の通り.
    undefined reference to `curl_easy_init'
    undefined reference to `curl_easy_setup'
    curl のライブラリをうまくリンクできていないようだったので,
    locate libcurl
    で libcurl の場所を確認して,LDFLAGS につけ足した.

  • エラーその2
    また別の時に再インストールしようとすると,
    /usr/bin/ld: indent.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
    /usr/bin/ld: final link failed: Nonrepresentable section on output
    というエラーが出たので,一度 clean をしてから
    export CFLAGS=-fPIC
    を新たに定義して上記の操作をやり直したら成功.

  • 参考1 Getting and Building netCDF
  • 参考2 Running the configure Script



NetCDF-Fortran

先に,これの前にインストールした NetCDF4-C の bin のパス環境変数 PATH に追加して,nc-config コマンドが使えるようにしておく. ここでは,NetCDF-Fortranも NetCDF-C と同じディレクトリにインストールする.
どちらもバージョンを更新せず,もしするなら新たな場所にどちらもインストールし直す,と決めれば同じディレクトリでも特段の問題はないと思われる.

NetCDF4-C と同様に NetCDF Downloads からダウンロードするか,リポジトリを clone するかのどちらかを行う.

tar zxvf netcdf-fortran-4.X.X.tar.gz
cd netcdf-fortran-4.X.X

既にインストールされているNetCDF-Cのライブラリのパスやprefixを指定し,configure, make を実行する.

export NFDIR=$(nc-config --prefix)
export CFLAGS=$(nc-config --cflags)
export LDFLAGS=$(nc-config --libs)
./configure --prefix=$NFDIR --disable-fortran-type-check
make check
make install



  • エラーその1 (netcdf-fortran-4.4.5)
    netcdf-fortran-4.4.5 をコンパイルする時のエラー. nf_test/ftst_rengrps.F 内で
          implicit none
         include "netcdf.inc"
    と 1-column ずれており,旧形式の FORTRAN では 7-column 目以降から書かなければならないためエラーが出る.
    1つスペースを入れる修正が必要.
    修正してPR送ろうと思ったら既にissue#192で解決済だった.

  • 注意点
    既に conda が入っていてその中の nc-config にパスが通っているとややこしいことがわかった.
    最初に which nc-config で確認した方が良い.


NetCDF3.6.3

使われなくなってきたのでもう基本的にインストールする必要はない.
netcdf-3.6.3.tar.gz をどこかで解凍し,解凍された netcdf-3.6.3 に移動する.

tar -zxf netcdf-3.6.3.tar.gz
cd netcdf-3.6.3

その次に,prefix で保存する場所を指定しつつ,configure を実行し,下準備はOK.
どのコンパイラでinstallしたかわかるようにしておくと混同しない.下記"_gnu"のように.

./configure --prefix=/usr/local/netcdf-3.6.3_gnu

ディレクトリはそのままで,

make
make install

をして,インストール完了.



Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2023-12-14 (Thu) 13:43:31 (133d)