#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 のパスにも入っているかを確認する.~