NetCDFのインストール

注意点

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

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

NetCDF4

環境変数

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

export FC=gfortran
export CC=gcc

PGIなら

export FC=pgf90
export CC=pgcc

ifort(Intel)なら

export FC=ifort
export CC=gcc # icc (intel) はあまり使いたくない


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

export CPATH=$CPATH:/usr/local/hdf5/include
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/hdf5/lib



NetCDF-C

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

tar -zxf netcdf-c-4.6.0
cd netcdf-c-4.6.0

または,GitHub からリポジトリをクローンする.今後バージョンを更新するならこちらの方が楽.

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

更新の時は

git checkout v4.6.1

その後,環境変数の関係で root にログインしてからやる.
szip や hdf5 の include path 指定は各自の環境に合わせる.
curl.h のある場所を探して,--enable-dap --with-curl=/path/curl のように curl のパス指定をする.
もともと curl.h の場所に include のパスが通っていれば特に指定しなくても大丈夫だと思う.

export NCDIR=/usr/local/netcdf-c-4.6.1
export CPPFLAGS="-I/usr/local/szip/include -I/usr/local/hdf5-1.x.x/include"  # -1.x.x については HDF5の環境次第
export LDFLAGS="-L/usr/local/szip/lib -L/usr/local/hdf5-1.x.x/lib"
./configure --prefix=${NCDIR} --enable-netcdf-4 --enable-shared --enable-dap --disable-dap-remote-tests \
            --with-curl=/usr/include/x86_64-linux-gnu/curl 
make
make check
sudo make 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

ここでは,NetCDF-Fortranも NetCDF-C と同じディレクトリにインストールする (/usr/local/netcdf-c-4.x.x ).
どちらもバージョンを更新せず,もしするなら新たな場所にどちらもインストールし直す,と決めれば同じディレクトリでも特段の問題はないと思われる.

まず,NetCDF4-C のインストールで得た nc-config というコマンドのシンボリックリンクを /usr/local/bin のような PATH が通っている場所に作成しておく.

cd /usr/local/bin
ln -s ../netcdf-c-4.6.1/bin/nc-config nc-config # シンボリックリンク作成
nc-config --prefix # 確認 実行できなかったら正しくパスが通っていない.

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

git clone https://github.com/Unidata/netcdf-fortran
cd netcdf-fortran
git checkout v4.4.4

コンパイルの前に環境変数を設定しておく.

su
export CC=gcc
export FC=ifort
export NCDIR=$(nc-config --prefix)
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(nc-config --libdir)
# or,  LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NCDIR}/lib

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

export CPPFLAGS=-I${NCDIR}/include # or $(nc-config --include)
export LDFLAGS=-L${NCDIR}/lib # or $(nc-config --libs)
export NFDIR=${NCDIR}
./configure --prefix=${NFDIR} --disable-fortran-type-check
make check
make install

インストール後は bin に nf-config を入れておく.

cd /usr/local/bin
sudo ln -s ../netcdf4-c-4.6.1/bin/nf-config nf-config


.bashrc では下記のように書いておく.

# NetCDF 4
export NETCDF_CONFIG=$(nc-config)
export NETCDF_ROOT="$(${NETCDF_CONFIG} --prefix)"
export NETCDF_F_CONFIG=$(nf-config)
export NETCDF_F_ROOT="$(${NETCDF_F_CONFIG} --prefix)"
export LD_LIBRARY_PATH="${NETCDF_ROOT}/lib":${LD_LIBRARY_PATH}



  • エラーその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
sudo make install

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



Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2020-05-15 (Fri) 07:59:38 (196d)