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).
本ページは,手動インストールしないと気が済まない人,やむを得ず手動インストールせざるを得ない人のために, コンパイル関連情報を記録したものである.
- See also NetCDF セットアップ
用意するもの
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 product page = https://www.hdfgroup.org/solutions/hdf5/
- HDF Docs = https://portal.hdfgroup.org/display/support/Documentation
- HDF-EOS main = https://www.hdfeos.org/index.php
- HDF-EOS2 or HDF-EOS5 のライブラリダウンロード, ビルド = https://www.hdfeos.org/software/library.php
- szip 関連 = SZIP Compression HDF Products
動作検証環境
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 |