Locked History Actions

ROOT_CMake

ROOT install

事前に必要なパッケージ

  • ROOT をインストールする前に必要なパッケージはBuild Prerequisitesを参照。Scinentific Linux の場合は、同じ Red Hat 系のディストリビューションである Fedora の項目が参考になるはず。

CMake でインストール

  • CMake (version 2.8.9) を使って Scinentific Linux 6.4 に ROOT をインストールした。インストールの手順は Installing ROOT from Source を参考にした。ROOT を CMake でビルドしておくと、CMake が自動でライブラリを探してくれるので楽にらしい (参考: ROOT を CMake でビルド。)。

    • $ mkdir -p /home/koba/cern/root_v5.34.01/build
      $ cd /home/koba/cern/root_v5.34.01
      $ wget ftp://root.cern.ch/root/root_v5.34.01.source.tar.gz
      $ tar zxvf root_v5.34.01.source.tar.gz
      $ cd build
      $ cmake -DCMAKE_INSTALL_PREFIX=/home/koba/cern/root_v5.34.01/install /home/koba/cern/root_v5.34.01/root
      $ time make -j4 | tee my_makelog
      $ make install
      $ echo '#' >> /home/koba/.bashrc
      $ echo '# ROOT initilization' >> /home/koba/.bashrc
      $ echo 'source /home/koba/cern/root_v5.34.01/install/bin/thisroot.sh' >> /home/koba/.bashrc

Eclipse で build

  • Eclipse で build することもできる。ROOT のソースを読むときに便利。
    • $ mkdir -p /home/koba/cern/root_v5.34.01/build-eclipse
      $ cd /home/koba/cern/root_v5.34.01
      $ wget ftp://root.cern.ch/root/root_v5.34.01.source.tar.gz
      $ tar zxvf root_v5.34.01.source.tar.gz
      $ cd build-eclipse
      $ cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/home/koba/cern/root_v5.34.01/install-eclipse /home/koba/cern/root_v5.34.01/root
    • cmake 時のメッセージはこれ

  • Eclipse CDT を実行し .project と .cproject ファイルを Import する。Eclipse CDT のバージョンは 4 以上でないとだめかも?自分の場合は最新版を Eclipse のページからダウンロードした。
    1. File -> Import を選択。

    2. General -> Existin Projects into Workspace を選択し [ Next > ] ボタンを押す。

    3. Select root directory: に /home/koba/cern/root_v5.34.01/build-eclipse を指定し、[ Finish ] ボタンを押す。
  • Project Explorer に ROOT-RelWithDebInfo@build-eclipse という項目が表示される。

  • ROOT-RelWithDebInfo@build-eclipse の上で右クリックし、Build Project を選択すると、コンパイルが開始される ( 一度ソースを見ないと Build Project をクリックできない時がある?) 。

  • /home/koba/cern/root_v5.34.01/build-eclipse ディレクトリ内にいろいろ出来る。
  • build が終わったら、端末で $ make install を実行する。環境変数の設定も行う。
  • $ cd /home/koba/cern/root_v5.34.01/build-eclipse
    $ make install
    $ echo '#' >> /home/koba/.bashrc
    $ echo '# ROOT initilization' >> /home/koba/.bashrc
    $ echo 'source /home/koba/cern/root_v5.34.01/install-eclipse/bin/thisroot.sh' >> /home/koba/.bashrc

エラー

  • make 時の OpenSSL 関連のエラー
    • cmake 時はエラーとならないが、make 時に以下のエラーが出る。
    • ...
      [ 45%] Building CXX object net/net/CMakeFiles/Net.dir/src/THTTPMessage.o
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:37:25: error: openssl/sha.h: そのようなファイルやディレクトリはありません
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:38:26: error: openssl/hmac.h: そのようなファイルやディレクトリはありません
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:39:25: error: openssl/evp.h: そのようなファイルやディレクトリはありません
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:40:25: error: openssl/bio.h: そのようなファイルやディレクトリはありません
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:41:28: error: openssl/buffer.h: そのようなファイルやディレクトリはありません
      [ 45%] Building CXX object geom/geom/CMakeFiles/Geom.dir/src/TGeoGlobalMagField.o
      [ 46%] Building CXX object hist/hist/CMakeFiles/Hist.dir/src/TKDE.o
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx: In member function ‘TString THTTPMessage::Sign()’:
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:147: error: ‘SHA_DIGEST_LENGTH’ was not declared in this scope
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:154: error: ‘EVP_sha1’ was not declared in this scope
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:154: error: ‘digest’ was not declared in this scope
      /home/koba/cern/root_v5.34.01/root/net/net/src/THTTPMessage.cxx:154: error: ‘HMAC’ was not declared in this scope
      make[2]: *** [net/net/CMakeFiles/Net.dir/src/THTTPMessage.o] エラー 1
      make[2]: *** 未完了のジョブを待っています....
      make[1]: *** [net/net/CMakeFiles/Net.dir/all] エラー 2
      make[1]: *** 未完了のジョブを待っています....
      make: *** [all] エラー 2
  • 対処

    • openssl-devel パッケージをインストール後、cmake を実行し、make を実行すれば良い。具体的なコマンドは以下の通り。
    • $ su
      パスワード: ルートのパスワードを入力 
      # yum install openssl-devel
      y と入力
      # exit
      $ cd <ビルドするディレクトリ>
      $ cmake -DCMAKE_INSTALL_PREFIX=<インストール先のディレクトリ> <ソースのあるディレクトリ>
      $ make -j4