読者です 読者をやめる 読者になる 読者になる

ROOT 実行時のエラー

Fedora 25でビルドした ROOT 6.08.06 頃から、実行時にエラーがでるようになった。

エラー内容は

ERROR in cling::CIFactory::createCI(): cannot extract standard library include paths!
Invoking:
LC_ALL=C ccache -O2 -DNDEBUG -xc++ -E -v /dev/null 2>&1 >/dev/null | awk '/^#include </,/^End of search/{if (!/^#include </ && !/^End of search/){ print }}' | GREP_OPTIONS= grep -E "(c|g)\+\+"
Results was:
With exit code 256

というようなもの。ROOTのエラーといえばエラーなんだろうけれど、 ccache の man を見てみると、 ccache の後ろにコンパイラを指定する必要がある。コンパイラ指定の後にコンパイラオプション。多分ビルド時に

  1. コンパイラが ccache になっている
  2. ccache を使うのだけど、コンパイラを指定する変数が未定義

のどちらかなのだろうと推測。確かに ccache の後にコンパイラを指定して Invoking 下のコマンドを直接入れてみると、目的の結果が得られている様子。

ccmake で ビルド時の変数を確認してみると、CやCXXコンパイラに /usr/lib64/ccache/cc 等が指定されている。これが問題?

同じバージョンのROOTをBuildした他の環境では上記エラーがでておらず、そちらはそもそも ccache が入っていない。

コンパイラを直接指定しながら、もういちどROOTをビルドしてみる。エラーが出なくなった。

※ ROOTのビルドオプションに ccache を有効にするものがあった。有効にしてからビルドしたらどうなるのだろうか?