早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

HDF5_setup

HDF5 & HDF-EOS5 のセットアップ(tar ball 使用)

過去記事: HDF5 & HDF5-EOS のセットアップ: 最終更新2017年6月25日

最近のLinuxディストリビューションでは,HDF5 のパッケージが提供されている. 少なくとも,CentOS 7/8 では利用可能(chk 2021-06-14).

また,NetCDF 4.x 系列では,HDF5 が事前インストール済みである事がデフォルト. WRF v4 系列でも事実上 default とみなせそう(未確認; 2021-06-14).

本ページは,手動インストールしないと気が済まない人,やむを得ず手動インストールせざるを得ない人のために, コンパイル関連情報を記録したものである.

  用意するもの

 Latest version (HDF5 v1.12.0)

HDF5 v1.12.0, CentOS 8.3.2011 にて手動ビルド実施(2021-06-14).

  • HDF5-1.12.0.tar.bz2 (HDF5データ取扱い用のライブラリ)

 前提条件

  • HDFインストール以前に,下記の準備がなされていることを確認する:
  • 開発環境 (コンパイルに必要なツール群) がインストール済みである
    • (CentOS 7/8の場合) yum groupinstall "Development Tools" をやっとけ
    • (MacOS の場合) Xcode Command Line Tools のインストール.See also 私的Mac Tips
  • Cコンパイラはシステム標準の gcc
  • Fortran コンパイラは gfortran (実体はgcc) とする
    • 使用コンパイラを環境変数 FC に設定しておく
  • HDF5 インストール時に関係する条件・環境変数
    FC=gfortran
    FFLAGS=" -assume byterecl -convert big_endian "
    
  • FFLAGS の設定は,自分の個人的ルール(バイナリデータは input/output 共に big endian に統一)に基づく.別に big endian である必要はない.

 インストール手順

 HDF5 本体インストールの事前準備

多くの人は,以下を飛ばして HDF5 本体から開始しても 問題が生じないだろう. 下記は CentOS で jpeg, szip, zlib ライブラリの手動インストールが必要な場合のみ.

jpeg ライブラリ(libjpeg.a)のインストール

$ tar xf jpegsrc.v9c.tar
$ cd jpeg-9c/
$ ./configure --prefix=/usr/local
# make ; make install

ヘッダファイル,ライブラリファイルが /usr/local/{include,lib}/ 以下にインストール.

szip のコンパイル (/usr/local/{lib,include}/ 以下にインストール)

  • (Linux & MacOS 共通) szip のコンパイル & インストール. (You can get a source code from SZIP Compression HDF Products; ページ右側部分の "To obtain:" から)
    $ tar xzf szip-2.1.1.tar.gz
    $ cd szip-2.1.1/
    $ ./configure --prefix=/usr/local
    # make ; make install
    
  • szip のインストール結果を確認 (jpeg, szipだけならば,以下のものがあるはず)
    $ \ls -l /usr/local/lib
    total 5452
    -rw-r--r-- 1 root root 2612572 2021-06-14 17:01 libjpeg.a
    -rwxr-xr-x 1 root root     917 2021-06-14 17:01 libjpeg.la*
    lrwxrwxrwx 1 root root      16 2021-06-14 17:01 libjpeg.so -> libjpeg.so.9.3.0*
    lrwxrwxrwx 1 root root      16 2021-06-14 17:01 libjpeg.so.9 -> libjpeg.so.9.3.0*
    -rwxr-xr-x 1 root root 1417136 2020-05-03 14:01 libjpeg.so.9.1.0*
    -rwxr-xr-x 1 root root 1427048 2021-06-14 17:01 libjpeg.so.9.3.0*
    -rw-r--r-- 1 root root   59802 2021-06-14 17:04 libsz.a
    -rwxr-xr-x 1 root root     906 2021-06-14 17:04 libsz.la*
    lrwxrwxrwx 1 root root      14 2021-06-14 17:04 libsz.so -> libsz.so.2.0.0*
    lrwxrwxrwx 1 root root      14 2021-06-14 17:04 libsz.so.2 -> libsz.so.2.0.0*
    -rwxr-xr-x 1 root root   52392 2021-06-14 17:04 libsz.so.2.0.0*
    drwxr-xr-x 2 root root      24 2021-06-14 17:01 pkgconfig/
    $ \ls -l /usr/local/include
    total 104
    -rw-r--r-- 1 root root  1757 2021-06-14 17:01 jconfig.h
    -rw-r--r-- 1 root root 14580 2021-06-14 17:01 jerror.h
    -rw-r--r-- 1 root root 14925 2021-06-14 17:01 jmorecfg.h
    -rw-r--r-- 1 root root 49281 2021-06-14 17:01 jpeglib.h
    -rw-r--r-- 1 root root  3470 2021-06-14 17:04 ricehdf.h
    -rw-r--r-- 1 root root   960 2021-06-14 17:04 szip_adpt.h
    -rw-r--r-- 1 root root  5461 2021-06-14 17:04 szlib.h
    
  • 手間を減らすため,zlib はパッケージ利用.2018年以後はパッケージ使ってるけど,何も問題ない. パッケージだと動的ライブラリ(CentOS 8 なら /usr/lib64/libz.so)になる. もし静的ライブラリ(libz.a)が必要とか,どうしてもパッケージに依存したくないとか拘りがあるなら,下記でコンパイル. (You can get a source code from zlib Home Site.)
    $ tar xf zlib-1.2.11.tar
    $ cd zlib-1.2.11
    $ ./configure --prefix=/usr/local
    $ make ; make check
    # make install
    

 HDF5 本体

 HDF5 1.12.0 のインストール

HDF5 1.12.0 を configure & make,/usr/local/hdf5-1.12.0_gfortran/ 以下にインストール

$ export CC=gcc
$ export F77=$FC
$ tar xjf hdf5-1.12.0.tar.bz2
$ cd hdf5-1.12.0
$ ./configure  --prefix=/usr/local/hdf5-1.12.0_gfortran  --enable-fortran  --with-szlib=/usr/local
$ make >& log_make.txt
(または make > log_make.txt 2>&1)
$ make check >& log_make_check.txt
(make check は結構待ち時間が長い.10分程度?)
$ sudo make install

シンボリックリンクを張る

ln -s /usr/local/hdf5-1.12.0_gfortran /usr/local/hdf5
※直接 /usr/local/hdf5 をインストール先としないのは,バージョンアップなどによるテストを容易にする目的があるから

 環境設定

必要な情報を環境変数に追記. 各個人の$HOME にある設定ファイル(~/.bashrc など)でも可だが, 自分の場合, /etc/profile に書く. 各自の環境次第だが,コマンドやライブラリのサーチパスの順序には気をつける(この記述の意味が分からない人は気にしなくて良い).

### HDF5 v1.12.0
HDF5_HOME=/usr/local/hdf5
HDF5_LIB=$HDF5_HOME/lib
HDF5_INC=$HDF5_HOME/include
PATH="$HDF5_HOME/bin:$PATH"
LD_LIBRARY_PATH=${HDF5_LIB}:$LD_LIBRARY_PATH

export HDF5_HOME HDF5_INC HDF5_LIB

export LD_LIBRARY_PATH

 コンパイル失敗時

CentOS 7/8 環境では,エラーは発生せず (2021-06-14).

  HDF5, HDF-EOS5 参照情報

 外部リンク

  動作検証環境

HDF5 の正常動作を検証済みの環境

CPU OS or distribution kernel
(or MacOS X ver.)
C Fortran Check date
Intel Core i9-9900K 3.6 GHz CentOS 8.3.2011 4.18.0-240.22.1.el8_3.x86_64 GCC 8.3.1 (20191121 (Red Hat 8.3.1-5)) GNU Fortran (実体はgcc) 2021-06-14