公式サイトの説明:
NetCDF Users Guide: Getting and Building netCDF
>
HDF5 1.8.9以上もしくは
HDF5 1.10.1以上
>
zlib 1.2.5以上 (圧縮のため)
>
curl 7.18.0以上 (
DAP remote access client supportのため)
この他必要なライブラリが無くてエラーになった場合は適宜入れる.私の場合は
libxml2と
unzipが無かったので入れた.
HDF5のバージョン
今から
netCDF-C(現在
4.9.2)を新しく入れるのであれば
HDF5も最新のもの(現在
1.14.4-2)で良い.
2通り書かれていてちょっと混乱するが,「
netCDF-C 4.4.1またはそれ以下のバージョンを入れる場合は必ず
HDF5 1.8.xを使うこと」というような注意書きがあるので,
netCDF-C 4.4.1より上のバージョンを入れる場合は
HDF5 1.10.1以上を使えということなのだと思う.
DAP remote access client support
DAPは
Data Access Protocolの略で,主に科学データの転送のためにデザインされたデータ転送プロトコルだそうな.よく分からないけどここは重要ではないのでとりあえず気にしない.
+
The Data Access Protocol - DAP 2.0 | Earthdata
各ライブラリにおける手順は概ね共通している.
1. ソースコードのパッケージをダウンロードして展開する
2.
configureを実行する
3. コンパイルする
zlib, HDF5, netCDF-Cのビルドについて:
NetCDF Users Guide: Getting and Building netCDF
netCDF-Fortranのビルドについて:
NetCDF: Building the NetCDF-4.2 and later Fortran libraries
zlib
公式サイト:
zlib Home Site
インストール先ディレクトリを用意する.
ここで
${pkgdir}はパッケージを置くディレクトリ.どこでも問題ないはずなので
/home/(username)/pkgなど適当にそれ用のディレクトリを作るのが良いと思う.
パッケージを入手して展開
configureを実行して
makeでコンパイル,インストール
HDF5
公式サイト:
The HDF5® Library & File Format - The HDF Group
以下,パッケージの展開までの手順は省略
同じようにして
configureを実行,コンパイル,インストール
zlibのインストール先を
--with-zlibで指定する
curl
公式サイト:
curl
パッケージの展開までの手順は省略
configure,コンパイル,インストール
Gitから入手しても良い.
make testは少し時間が掛かるので注意.
netCDF-C
公式サイト:
Unidata | NetCDF
左の「Download」で欲しいファイルを探して取ってくる.
HDF5のインストール先ディレクトリ (
${H5DIR}) がデフォルトで
LD_LIBRARY_PATHに入っていない場合,これを加える.
パッケージの展開までの手順は省略
configure,コンパイル,インストール
コンパイルに少し時間が掛かる.
ちょっとコンパイル時の設定でミスってエラーが出たときに見たページ.参考までに
+
Compiling 8.2: "/usr/bin/ld: cannot find /usr/local/lib/: File format not recognised"
+
[netCDF #AZL-185988]: Error when building/configure NetCDF-FORTRAN Interface
こういう時のエラーは
LD_LIBRARY_PATHに然るべきパスを登録していなかったあるいは
exportしていなかったというパターンが多いと思う.
netCDF-FORTRAN
公式サイト:
Unidata | NetCDF
netCDF-Cと同様,左の「Download」で欲しいファイルを探して取ってくる.
パッケージの展開までの手順は省略
configure,コンパイル,インストール
ここでは省略したが,ドキュメントにはデフォルトのものとは異なるコンパイラを使う場合の設定方法,
sudoを使う場合についての注意,クロスコンパイリング時のオプションなど書かれているので必要に応じて参照されたい.
コンパイル時にデータ型不一致の警告が出るのが気になるが,ソースコードを見たところ浮動小数点数を
Cの文字の配列として受け取っているようで,
interfaceを作らずに複数の型の入力に対応できる手続きを作る工夫をしているような雰囲気だったのでとりあえず大丈夫ということにしておく.