NetCDF
    Top > Linux > ツール・ライブラリ
    はじめに
     本記事はLinux にnetCDF-C及びnetCDF-Fortranをソースコードからビルド・インストールする手順を説明したものです.実行環境はWindowsのWSL2ですがLinuxマシンでも同じように出来ると思います.  ソースコードからインストールするのは手間が掛かります.aptやyumなどのパッケージ管理ツールがあるならそれを使った方が断然楽です.この記事は何らかの理由でそれらが使えない場合やソースコード原理主義者の存在を想定して書いたものです.  加えて今回は管理者権限を持っていない想定で行いました.そのためconfigureを実行する際に--prefixでデフォルトと異なるインストール先ディレクトリを設定したり,コンパイル時にオプションでライブラリのパスを指定したりといったことを行っています.管理者権限でデフォルトのディレクトリ(/usr/localなど)にインストールする場合はそれらが不要となるため多少は楽になるでしょうが,ソースからビルドしている時点で面倒なことには変わりないです.  またこういうパッケージは通常/usr/localなどの下にインストールするのがスタンダードですが,そうすると異なるパッケージのライブラリが/usr/local/libの下に全部まとめて入ることになり,バージョン管理などで後が面倒なことになりそうなので,今回は分離することにしました.zlibは~/local/zlib/lib, ~/local/zlib/binなどに,HDF5は~/local/hdf5/lib, ~/local/hdf5/binなどにそれぞれ入れる,といった具合です.
    依存関係
     公式サイトの説明:   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を作らずに複数の型の入力に対応できる手続きを作る工夫をしているような雰囲気だったのでとりあえず大丈夫ということにしておく.
    References
    zlib Home Site + https://www.zlib.net/ The HDF5® Library & File Format - The HDF Group + https://www.hdfgroup.org/solutions/hdf5/ curl + https://curl.se/ Unidata | NetCDF + https://www.unidata.ucar.edu/software/netcdf/ NetCDF Users Guide: Getting and Building netCDF + https://docs.unidata.ucar.edu/nug/current/getting_and_building_netcdf.html NetCDF: Building the NetCDF-4.2 and later Fortran libraries + https://docs.unidata.ucar.edu/netcdf-c/current/building_netcdf_fortran.html The Data Access Protocol - DAP 2.0 | Earthdata + https://www.earthdata.nasa.gov/esdis/esco/standards-and-practices/data-access-protocol-2 Compiling 8.2: "/usr/bin/ld: cannot find /usr/local/lib/: File format not recognised" + https://groups.google.com/g/raxml/c/1hOLuNW990A?pli=1 [netCDF #AZL-185988]: Error when building/configure NetCDF-FORTRAN Interface + https://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg13260.html