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

HDF5_setup

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

NetCDF 4.x 系列では,HDF5 が事前インストール済みである事がデフォルト. そのため,Aura 関連人工衛星データを取り扱う人に限らず, HDF5 の需要が増加しているようだ.

とはいえ,多くのユーザ(特に学生さん)は,手動インストールにこだわる必要ない. 各Linuxディストリビューションで提供されている(であろう), パッケージをインストール(yum などのパッケージ管理ツールを使用)すれば事は足りるはずだ.

本ページは,残念ながら手動でインストールせざるを得ない人のために, コンパイル関連情報を記録したものである.

  用意するもの

 Latest version (checked: 2013-08-05)

HDF5 v1.8.11, MacOS X (10.8.4) にて確認. ただし,HDF-EOS5 は未確認(2013-08-05).

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

 Old version (2009年8月以前)

  • jpegsrc.v6b.tar.gz
  • szip-2.1.tar.gz (SZIP 圧縮を使用するため)
  • HDF5-1.6.7.tar.gz (HDF5データ取扱い用のライブラリ)
  • HDF-EOS5.1.11.tar.Z (テストもしたけりゃ HDF-EOS5.1.11_TestDriver.tar.Z も取得)

HDF5, HDF-EOS5 共に最新版ではない(2009年7月にリリース.それぞれ v1.8.3 & 5.1.12)が、 2009年8月時点では,これら最新版のコンパイルに失敗するので、ここでは使用しない.

zlib (libz.a) は,大抵の場合 /usr/lib/ (64-bit機なら,/usr/lib64/)以下にインストール済みのはず。jpeg のライブラリは shared object なら入っている.ただし,HDF は static library しかサポートしないので,ここでは手動インストールする。

 前提条件

  • HDFインストール以前に,下記の準備がなされていることを確認する:
  • 開発環境 (コンパイルに必要なツール群) がインストール済みである
    • (CentOS の場合) yum groupinstall "Development Tools" "Development Libraries" をやっとけ
    • (MacOS の場合) Xcode Command Line Tools のインストール.See also 私的Mac Tips
  • Cコンパイラはシステム標準の gcc
  • Fortran コンパイラは Intel Fortran (CentOS v6.x 以前) or gfortran (MacOS, CentOS v7.x 以後) とする
    • 使用コンパイラを環境変数 FC に設定しておく
  • HDF5/HDF-EOS5 インストール時に関係する条件・環境変数 (CentOS v6.x 以前 and Intel Fortran の場合)
    FC=/usr/local/intel/Compiler/11.1/056/bin/intel64/ifort
    FFLAGS=" -assume byterecl -convert big_endian "
    
  • HDF5 インストール時に関係する条件・環境変数 (MacOS v7.x 以後 and gfortran の場合): 特に何もやってない.
  • CentOS 上の Intel Fortran のインストール先はデフォルトと異なる.私の個人的趣味の問題.
  • FFLAGS の設定は,自分の個人的ルール(バイナリデータは全て big endian に統一)に基づく.別に big endian である必要はない(はず).

 インストール手順

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

多くの人は,以下を飛ばして HDF5 本体から開始しても 問題が生じないだろう. 下記は CentOS で jpeg, szip, zlib ライブラリの手動インストールが必要な場合のみ(CentOS 5.x あたりでは,これらライブラリの整備状況が良くなかったために手動インストールした.

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

$ tar xzf jpegsrc.v6b.tar.gz
$ cd jpeg-6b/
$ ./configure --prefix=/usr/local
# make ; make install ; make install-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.tar.gz
    $ cd szip-2.1/
    $ ./configure --prefix=/usr/local
    # make ; make install
    
  • szip のインストール結果を確認 (szipの他に何もなければ,以下のものがあるはず)
    $ \ls -l /usr/local/lib
    total 116
    -rw-r--r-- 1 root root 50706 Aug 21 19:16 libsz.a
    -rwxr-xr-x 1 root root   815 Aug 21 19:16 libsz.la
    lrwxrwxrwx 1 root root    14 Aug 21 19:16 libsz.so -> libsz.so.2.0.0
    lrwxrwxrwx 1 root root    14 Aug 21 19:16 libsz.so.2 -> libsz.so.2.0.0
    -rwxr-xr-x 1 root root 51111 Aug 21 19:16 libsz.so.2.0.0
    $ \ls -l /usr/local/include
    total 16
    -rw-r--r-- 1 root root 3470 Aug 21 19:16 ricehdf.h
    -rw-r--r-- 1 root root  705 Aug 21 19:16 szip_adpt.h
    -rw-r--r-- 1 root root 5282 Aug 21 19:16 szlib.h
    
  • 静的ライブラリ libz.a が必要となる (例えば Fedora 11 では, パッケージインストール出来ない)場合は, tarball からの手動インストールを実施. (You can get a source code from zlib Home Site.)
    $ export CC=icc
    $ export CFLAGS="-O3 -fPIC"
    $ tar xzf zlib-1.2.3.tar.gz
    $ cd zlib-1.2.3
    $ ./configure --prefix=/usr/local
    (念のため Makefile を確認.CC=icc & CFLAGS=-O3 -fPIC -DUSE_MMAP を確認)
    $ make ; make check
    # make install
    

 HDF5 本体

 HDF5 1.8.11 のインストール

(MacOS) HDF5 1.8.11 を configure & make,/usr/loca/hdf5-1.8.11/ 以下にインストール

$ export CC=gcc
$ export F77=$FC
$ tar xzf hdf5-1.8.11.tar.gz
$ cd hdf5-1.8.11
$ F9X=ifort ./configure  --prefix=/usr/local/hdf5-1.8.11  --enable-fortran  --with-szlib=/usr/local
$ make >& log_make.txt
$ make check >& log_make_check.txt
(make check は,MacOS X だと問題なく終了)
$ sudo make install

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

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

 HDF5 1.6.7 のインストール

HDF5 1.6.7 を configure & make,/usr/loca/hdf5-1.6.7/ 以下にインストール

$ export CC=icc
$ export F77=$FC
$ tar xzf hdf5-1.6.7.tar.gz
$ cd hdf5-1.6.7
$ F9X=ifort ./configure  --prefix=/usr/local/hdf5-1.6.7 --enable-fortran --with-szlib=/usr/local  (次行に継続)
--with-zlib=/usr/include,/usr/lib64 --enable-static-exec --enable-production --disable-hl
(Fedora 11 の場合は,libz.a を手動で /usr/local/{include,lib}/ 以下に入れているので,--with-zlib= 以下を修正しておく)
$ make >& log_make.txt
$ make check >& log_make_check.txt
(make check は途中で失敗するが,とりあえず無視する)
# make install

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

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

HDF-EOS5 のコンパイル&インストール

HDF-EOS5.1.12 は,現在(2009年10月)の環境ではコンパイル失敗.原因特定できず.とりあえずインストール可能なものを使う.

$ tar xzf HDF-EOS5.1.11.tar.Z
$ tar xzf HDF-EOS5.1.11_TESTDRIVERS.tar.Z
$ cd hdfeos5/
$ ./configure --with-hdf5=/usr/local/hdf5 --prefix=/usr/local/HDF-EOS5_1.11 --with-szlib=/usr/local --enable-install-include
$ make > log_make.txt
$ make check > log_check.txt
# make install

とりあえず,コマンド&ライブラリ作成は成功する.動作未検証.

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

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

 環境設定

必要な情報を環境変数に追記. 各個人の$HOME にある設定ファイル(~/.bashrc など)でも可だが, 自分の場合, /etc/profile に書く.

### HDF5 v1.6.7
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

### HDF-EOS5_1.11
HDFEOS5_HOME=/usr/local/hdfeos5
HDFEOS5_LIB=$HDFEOS5_HOME/lib
HDFEOS5_INC=$HDFEOS5_HOME/include
LD_LIBRARY_PATH=${HDFEOS5_LIB}:$LD_LIBRARY_PATH

export HDF5_HOME HDFEOS5_HOME
export HDF5_INC HDFEOS5_INC
export HDF5_LIB HDFEOS5_LIB

export LD_LIBRARY_PATH

 コンパイル失敗時

下記はコンパイル失敗時のメモ(2008年7月頃). HDF-EOS5.1.12 の make の初期段階で Error 発生した.後日のために、念のため記録.

(参考: make 時のエラーメッセージの末尾のみ掲載)
(大量のwarning があるため中略)
EHapi.c:11227: warning: passing argument 1 of 'H5Eset_auto2' makes integer from pointer without a cast
/usr/local/hdf5-1.8.3/include/H5Epublic.h:174: note: expected 'hid_t' but argument is of type 'void *'
EHapi.c:11227: error: too few arguments to function 'H5Eset_auto2'
EHapi.c:11228: error: too few arguments to function 'H5Dopen2'
EHapi.c: In function 'HE5_EHset_error_on':
EHapi.c:11255: error: too few arguments to function 'H5Eclear2'
EHapi.c: In function 'HE5_EHprint':
EHapi.c:11280: warning: passing argument 1 of 'H5Eprint2' makes integer from  pointer without a cast
/usr/local/hdf5-1.8.3/include/H5Epublic.h:170: note: expected 'hid_t' but  argument is of type 'struct _IO_FILE *'
EHapi.c:11280: error: too few arguments to function 'H5Eprint2'
EHapi.c:11286: error: too few arguments to function 'H5Eclear2'
make[1]: *** [EHapi.lo] エラー 1
make[1]: ディレクトリ `/raid1/project/src/source/HDF/hdfeos5/src' から出ます
make: *** [all-recursive] エラー 1

別の手順: ./bin/INSTALL-HDFEOS5 を使用する場合これを使ってもダメだった.

$ export CC=/usr/local/hdf5/bin/h5cc
$ export HDFLIB=$HDF_LIB
$ export HDFINC=$HDF_INC
$ export SZIPLIB=/usr/local/lib
$ export SZIPINC=/usr/local/include
$ export HDF5INC=/usr/local/hdf5/include
$ export HDF5LIB=/usr/local/hdf5/lib
$ export LINUX_BRAND=linux64
$ ./configure --with-hdf5=/usr/local/hdf5 --prefix=/usr/local/HDF-EOS5_1.12 \
--with-szlib=/usr/local --enable-install-include
$ make > log_make.txt

make の初期段階で Error 発生.

  HDF5, HDF-EOS5 参照情報

 外部リンク

  動作検証環境

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

CPU OS or distribution kernel
(or MacOS X ver.)
C Fortran
Intel Core i5 1.7 GHz
(MacBook Air Mid2012 model)
MacOS X 10.8.4 GCC 4.8.0 (20120408; 64-bit) gfortran (Same as GCC 4.8.0 20120408; 64-bit)
Intel Core i5 1.7 GHz
(MacBook Air Mid2012 model)
CentOS 6.5
(on VMware Fusion 5.0.4)
2.6.32-431.3.1.el6.x86_64 GCC 4.4.7 (20120313; 64-bit) Intel Fortran composerXE-2011.2.137
(2014-02-06; 64-bit)

HDF5 & HDF-EOS5 の正常動作を検証済みの環境

CPU OS or distribution kernel C Fortran
Intel Core i5-3540S 2.8GHz CentOS 7.1 3.10.0-229.11.1.el7 gcc 4.8.3 (20140911) gfortran (same as gcc) 4.8.3 (20140911)
AMD Athlon64 X2 4400 Fedora 11 2.6.30.8-64.fc11.x86_64 Intel C 11.1.056 (2009-08-27; 64-bit) Intel Fortran 11.1.056 (2009-08-27; 64-bit)

動作が失敗する環境

CPU OS or distribution kernel C Fortran
Intel Centrino CentOS 5.3 2.6.18.164.el5 gcc 4.1.2 (20080704) Intel Fortran 10.1.022 (32-bit)
Intel Core2Quad Q9550 (2.83GHz) CentOS 5.3 2.6.18-128.7.1.el5.centos.plus gcc 4.1.2 (20080704) Intel Fortran 11.0.081 (64-bit)
Intel Xeon L5410 (2.33GHz) CentOS 5.3 2.6.18-128.7.1.el5.centos.plus gcc 4.1.2 (20080704) Intel Fortran 11.1.056 (64-bit)
AMD Athlon64 X2 4400 Fedora 11 2.6.30.8-64.fc11.x86_64 gcc 4.4.1 (20090725) Intel Fortran 11.0.081 (64-bit)
Intel Xeon L5410 (2.33GHz) CentOS 5.3 2.6.18-128.7.1.el5.centos.plus gcc 4.1.2 (20080704) Intel Fortran 10.1.022 (64-bit)