#author("2022-11-22T14:36:38+09:00","default:Miyashita","Miyashita")
#author("2022-11-22T16:09:44+09:00","default:Miyashita","Miyashita")
*HDF5のインストール [#oa169485]
#contents
~
**はじめに [#pad9e72b]
各種インストールに際して
#codeprettify{{
make install
}}
などと表記しているが,パス(prefix の指定場所)やユーザー(root)によっては sudo が不要なので,都合に応じて変更することに注意されたい.~
~

**zlib,szipのインストール [#q635c41a]
C と Fortran のコンパイラを指す環境変数 CC と FC は事前に定義しておくものとする.configure コマンドと同時に定義してもよい.
#codeprettify{{
CC=gcc
FC=gfortran
}}
~
HDF5のインストールの前に zlib と szip をインストールする.~
[[zlib>http://www.zlib.net]] のページのリンクから zlib のソースをダウンロードできる.~
ダウンロード後は解凍してインストールを実行する.~
tar.gz 形式をダウンロードしたとすれば下記の通り.
#codeprettify{{
tar zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/local
make
make install
}}
szip についても同様に行う.ソースは [[SZIP Compression in HDF Products>https://support.hdfgroup.org/doc_resource/SZIP/]] の "SZIP Source Code" から.~
#codeprettify{{
tar zxf szip-2.1.1.tar.gz 
cd szip-2.1.1/
./configure --prefix=$HOME/local
make && make install # &&で繋いでも良い
}}
~
最近は cmake と使ってインストールするのが流行り?のようなので, cmake を使う方法も.
#codeprettify{{
cd zlib-1.2.11
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/local/src/zlib-1.2.11
make 
make install
}}
#codeprettify{{
cd szip-2.1.1
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/local/src/szip-2.1.1
make 
make install
}}
~

**HDF5のインストール [#v8d455c9]
The HDF5 Group のページから,HDF5 のソースをダウンロードできる.~
追記:管理されているウェブサイトが変更になった.ソースは [[HDF SUPPORT PORTAL>https://portal.hdfgroup.org/display/support]] の Downloads から.
~
configure をする前に,pthread.h, libthread.so があるか確認する.
#codeprettify{{
locate pthread.h
 /usr/include/pthread.h
locate libpthread.so
 /usr/lib/x86_64-linux-gnu/
}}
↑のパスが一般に参照可能であるならば,次の ./configure での --with-pthread は不要と思われる.~
~
次に,いつも通り tar.gz を解凍後,上の pthread 関連のパスを確認して configure で指定する.~
with-package のところは実際に自分のインストールした szip や zlib の場所を指定する.~
szip は with-szip= ではなくて with-szlib= となるらしい.
#codeprettify{{
tar -zxf hdf5-1.x.x
cd hdf5-1.x.x
./configure --prefix=$HOME/local/src/hdf5-1.x.x \ 
                    --enable-fortran --enable-hl --enable-shared \
./configure --prefix=$HOME/local/src/hdf5-1.x.x --enable-fortran \
                    --with-szlib=$HOME/local/src/szip-2.1.1 \ # 環境に応じてパスを修正,以降も同じ
                    --with-zlib=$HOME/local/src/zlib-1.12.1 \
                    --with-pthread=/usr/include/,/usr/lib/x86_64-linux-gnu
                    --with-zlib=$HOME/local/src/zlib-1.12.1
}}
また,バージョンごとに分ける必要性を感じなければ,hdf5 の prefix も /hogehoge/hdf5 などで良いかも.~
オプションの --enable-hl や --enable-shared はデフォルトで on になっているバージョンが多いので省略.
~
他にも --enable-cxx オプションを追加したかったが,今の所自分に C++ は必須でなく,最新パッケージに対応した環境構築が面倒くさそうだったので諦めた.~
C++を有効にする場合は CXXFLAGS="-I/usr/foo/bar" などを駆使する.~
~
configure を実行したら,make と make install で完了.コンパイル中 warning がたくさん出たけど無視した.
#codeprettify{{
make
make check # 結構長い時間がかかる
make install
}}
FC が ifort の場合で root で make install する場合は root にも ifort のパスが通っているかを確認する.~
~
~

***エラー,ハマったこと [#q6398052]
ifort 18.0.1 と,HDF-1.10.1 では,make のコンパイル中にエラーが発生した.内容は[[ここ>https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/747951]]に書いてあることとほぼ同じだった.エラーメッセージは
 Multiple objects from the same EQUIVALENCE set may not appear in a COMMON block.
common ブロックと equivalence の問題らしい.~
わからないままだったので,バージョンを下げて HDF5-1.8.20 でコンパイルすることにした.問題なくインストールできた.~

sudo make か root で make をする時は,ifort が root のパスにも入っているかを確認する.~

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes