HDF5 & HDF-EOS5 のセットアップ(tar ball 使用)
NetCDF 4.x 系列では,HDF5 が事前インストール済みである事がデフォルト. そのため,Aura 関連人工衛星データを取り扱う人に限らず, HDF5 の需要が増加しているようだ.
とはいえ,多くのユーザ(特に学生さん)は,手動インストールにこだわる必要ない. 各Linuxディストリビューションで提供されている(であろう), パッケージをインストール(yum などのパッケージ管理ツールを使用)すれば事は足りるはずだ.
本ページは,残念ながら手動でインストールせざるを得ない人のために, コンパイル関連情報を記録したものである.
- See also NetCDF セットアップ
- See also HDF & HDF-EOS セットアップ
用意するもの
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 product page = http://www.hdfgroup.org/HDF5/
- HDF Docs = http://hdfeos.org/docs.php
- HDF-EOS FAQ = http://newsroom.gsfc.nasa.gov/sdptoolkit/hdfeosfaq.html
- HDF-EOS5 ダウンロード = ftp://edhs1.gsfc.nasa.gov/edhs/hdfeos5/latest_release/
- szip 関連 = SZIP Compression HDF Products; 必須ではないが,動作速度(読み書き)の高速化が期待できるので入れるべき.
動作検証環境
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) |