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

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 を有効にするものがあった。有効にしてからビルドしたらどうなるのだろうか?

 

ROOT, Pythia6, cmake

ROOTのビルド時にPythia6 を有効にしたい。cmake でビルドしたいのだけど、ROOTにはいっている Pythia6.cmake で find_packageしたい。

cmake -Dpythia6=ON 

で良いはずなのだが、適切に PYTHIA6 変数を設定しても Pythia6.cmake中の get_filename_component でエラー。

PYTHIA6_LIBRARYを直接していすれば良いのだけど。

 

cmake -DPYTHIA6_LIBRARY=... -Dpythia6=ON

 

ROOTのコンパイル

ROOT

ROOT a Data analysis Framework | ROOT a Data analysis Framework

をビルドしようと、cmake-gui を使ってみた。GUIでソース、ビルド用ディレクトリを指定して、さらにカスタム変数の調整もできてしまう、便利なもの。自前のプロジェクトを cmake 対応した時に、試してみて便利とおもいユーザーにすすめていた。

tar ball をダウンロードして、展開。cmake-gui でビルド用ディレクトリも作り、configure & generate。あとはビルドということで、

$ cmake  --build ${BUILD_DIR}

とするが・・・・エラー。コンパイルの途中でエラー。compiledata.h がないよ、ってエラー。

検索してもそういうエラーは報告されていないので、????

原因: CMakeLists.txt の設定か、普通に cmake ${SOURCE_DIR} をすると、 include/comliledata.h を作る様子。cmake-gui を使う時にはビルド用ディレクトリから cmake を使っていないたか、エラーになってしまう。

対策:変数の設定をかんたんに行いたいのであれば ccmake のほうが良いでしょう。

 

 

ROOTを組み込んだプロジェクトをcmakeで管理する

ROOTライブラリを使うと色々便利なので多用している。最近は直接Makefileを書いたりautotoolsを使ったりするよりも、cmakeを使うのが良いらしい。ROOT自体も6.08からcmakeでのビルドがメインになった。

ならば、ROOTを使うプロジェクトもcmakeで管理すれば良いのでは?と、cmake対応をすすめてみた。autotoolsのかわり?的な気分ではじめてみたが、確かに良い感じ。ccmakeのお世話になる程ではないけれど、Makefileとの分離が程良くできている。autotoolsはMakefileのテンプレートを用意し環境に応じてMakefileを作るが、cmakeはNiniaを吐き出す事も出来る。いくつかのIDE用プロジェクトファイルも作ってくれるし、まさにビルド支援ツール。

色々な環境に対応したMODULEを使えば、マルチプラットフォーム対応への壁も低くなりそう。

標準的なLinuxであれば、今までMakefileにかけた圧倒的にビルド環境構築にかかる時間が短かくなる。build-in-sourceが非推奨なのも、バージョン管理システムとの親和性が良い。特に意識せずに別ディレクトリでのビルドが可能。

ROOT用の設定はFindROOT.cmakeを使えば一発。使い方は

https://root.cern.ch/how/integrate-root-my-project-cmake

こちらにまとまっています。知らずに中身を見ても使える程度の内容なので、cmake初学者には良い教材かも。

忘れないうちに、メモ。

忘れない内にメモ

Windows 用の X server について。今まで Xming、VcXsrv を使ってみた。諸般の事情から VcXsrv でルートウィンドウを表示しながら使っている。

今回、MobaXterm なるものを知った。無料版と有料版があり、無料版を試してみた。

mobaxterm.mobatek.net

そんなに悪くない。初心者にとってX serverを理解するのが既に壁になっていることを考えると、ターミナルと一緒になっている所がなお良いような気がする。PuTTYの設定をつかってSSHセッションを張ってくれるのも良い。

若干もたつくような気もしないでもないが、しばらく使ってみることにする。

セッション数の制限や、不必要なゲーム等を削除できる有料版も魅力的に思えてくるかも。

 

なにかレビューあるかしら?とサーフィン(死語?)していると、これを見つけた。

qiita.com

もう、全くその通り。MobaXtermの良いところを余すところなく紹介されています。敬服。

 

ようやく問題解決

2週間ほど前に仕事用Windows10デスクトップにトラブル発生。起動すると、ログイン画面の直前で真っ黒画面になって、くるくる回るステータスバーがまわり続ける。

セーフモードでなんとか起動してみたりすると、どうやらビデオボードまわりで問題発生の様子。GeForce 650 Ti を載せているのだけど、オンボードビデオからディスプレイに出力する分にはなんら問題なし。GeForceから出力すると、どうやらログイン画面までも到達せずに無限ループに陥っている。

グラフィックドライバの問題か?と、新しいドライバがでるまではオンボードビデオを使いましょうということで、ここ数日は過ごしてきた。ところが、オンボードビデオの場合に

  • VcXsrv がつかえない
  • BlueJeansテレビ会議を使うと、画像が描写されない

という問題が発生。オンボードビデオってこんなに貧弱なのか?とおもうが、そこまで貧弱とは思い難い。VcXsrvについては、リモートログインしているLinux Box を手元に移動して、ディスプレイをつけて、直接使う事で回避。テレビ会議については、他のPCで回避。

まったく理解のできない症状が出ていたのだけど、漸く問題を同定できた。しばらく前に、iPad Pro をサブディスプレイとして使えないだろうか?と導入した "Duet Display"

www.duetdisplay.com

が諸悪の根源だった模様。これをアンインストールしてみたら、まったく問題無く GeForce 650 Ti 使えるし、試していないけど 上記の問題も解決しているでしょう。最新版は バージョン1-4-5-2で、インストールされていたのは 1-4-4-2。最新版なら問題は解決しているのだろうか・・・・・

※ 追記

最新版をインストールして再起動。今の所問題なく動作している。盲点だった・・・・

セカンドモニターにフルスクリーン表示(VcXsrv)

VcXsrc で作業をしているのだが、セカンドモニター上でフルスクリーン表示をしたい。(ルートレスが使えればなにも問題ないのに、ROOTとの相性問題がまだある)

XLaunch でルートレスを選択して軌道しても、ウィンドウはメインモニタ上。目的を果たすには、

  1. XLaunchで設定をファイルに保存
  2. 保存したファイルを適当なエディタで編集。(ASCIIのXMLファイル)
  3. 編集箇所: ExtraParams に "-screen 0 @2" を追加

設定ファイルを保存し、ダブルクリック。セカンドモニタにフルスクリーン表示されているのでは?

 参考: 

www.straightrunning.com