両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン |
softwares:nestdaq:installation_saho_2023 [2023/10/13 21:52] – [nestdaq-user-impl (STFBplayer - FileSink/Scaler) の実行] kobayash | softwares:nestdaq:installation_saho_2023 [2023/10/13 23:46] (現在) – [NestDAQ 本体のインストール] kobayash |
---|
| |
==== 準備 ==== | ==== 準備 ==== |
| === アカウントについて === |
* 自分のアカウントは、kobayash で、ホームディレクトリは /home/kobayash。このディレクトリ以下に NestDAQ をインストールする。nestdaq 関連のライブラリは /home/kobayash/nestdaqにインストールする。以下の文章では、kobayash の部分を適宜自身のアカウント名に読み替えてインストールすれば良い。 | * 自分のアカウントは、kobayash で、ホームディレクトリは /home/kobayash。このディレクトリ以下に NestDAQ をインストールする。nestdaq 関連のライブラリは /home/kobayash/nestdaqにインストールする。以下の文章では、kobayash の部分を適宜自身のアカウント名に読み替えてインストールすれば良い。 |
* ログインシェル は bash。以下のコマンドで確認可能。<code> $ echo $SHELL | * ログインシェル は bash。以下のコマンドで確認可能。<code> $ echo $SHELL |
/bin/bash | /bin/bash |
</code> saho-a /saho-b のデフォルトのシェルは tcsh だった気がするが、もし tcsh だった場合、bashに変更しておくと良い。ログインシェルを bash に変えるには、アカウント管理ページから設定できず、計算機室にメールでお願いする必要があるかも。 | </code> saho-a /saho-b のデフォルトのシェルは tcsh だった気がするが、もし tcsh だった場合、bashに変更しておくと良い。ログインシェルを bash に変えるには、アカウント管理ページから設定できず、計算機室にメールでお願いする必要があるかも。 |
| === 必要なパッケージ === |
* NestDAQは zstd, libzstd-devel, python3 などのパッケージが必要になるが、saho-a/saho-b にはすでにインストール済み。以下のコマンドで確認できる。<code> | * NestDAQは zstd, libzstd-devel, python3 などのパッケージが必要になるが、saho-a/saho-b にはすでにインストール済み。以下のコマンドで確認できる。<code> |
[kobayash@saho-a ~]$ dnf list zstd libzstd-devel bzip2-devel cmake python36-devel ptyhon36 tmux | [kobayash@saho-a ~]$ dnf list zstd libzstd-devel bzip2-devel cmake python36-devel ptyhon36 tmux |
* RedisTimeSeries を make する際、python3 が必要になるが、すでにインストール済み。 | * RedisTimeSeries を make する際、python3 が必要になるが、すでにインストール済み。 |
* Boost を make する際、zstd と bzip2 のオプションが有効になっている必要がある。そうでないと、nestdaq-user-impl/FileSink.cxx のリンクでエラーになる。zstd, libzstd-devel, bzip2-devel パッケージがインストールされている必要あり。さらに python3-devel も必要。 | * Boost を make する際、zstd と bzip2 のオプションが有効になっている必要がある。そうでないと、nestdaq-user-impl/FileSink.cxx のリンクでエラーになる。zstd, libzstd-devel, bzip2-devel パッケージがインストールされている必要あり。さらに python3-devel も必要。 |
* FairMQデバイスを複数立ち上げるため、tmux もあると便利。 | * FairMQデバイスを複数立ち上げるため、tmux もあると便利。saho-a/saho-b にはすでにインストール済み。 |
| === 新しいバージョンの CMake インストール === |
* ZeroMQ を build する際、cmake コマンドが必要。ただ、デフォルトのcmake を用いた場合、バージョン が 3.11 と古いため ZeroMQ のcmake は通るが、FairMQ の cmake が通らない。最新の cmake を自前でインストールする必要がある。以下、インストール方法。 | * ZeroMQ を build する際、cmake コマンドが必要。ただ、デフォルトのcmake を用いた場合、バージョン が 3.11 と古いため ZeroMQ のcmake は通るが、FairMQ の cmake が通らない。最新の cmake を自前でインストールする必要がある。以下、インストール方法。 |
* saho-a/saho-b に ssh でログインし、cmake 用のディレクトリを作っておく。ディレクトリ名は cmake のバージョンに合わせて cmake-3.27.7 としておく。<code> $ ssh kobayash@saho-a | * saho-a/saho-b に ssh でログインし、cmake 用のディレクトリを作っておく。ディレクトリ名は cmake のバージョンに合わせて cmake-3.27.7 としておく。<code> $ ssh kobayash@saho-a |
CMake suite maintained and supported by Kitware (kitware.com/cmake). | CMake suite maintained and supported by Kitware (kitware.com/cmake). |
</code> | </code> |
| === 新しいバージョンの ROOT インストール === |
* ROOTのバージョンが古いと、nestdaq-user-impl のソースコードのコンパイル時にエラーになる。具体的には、saho-a/saho-b にインストールされている ROOT v6.20.06 だとエラーになるが、ROOTの最新版 (v6.28.06) だと問題なかった。以下のコマンドで ROOT のバージョンを確認可能。<code>$ root --version | * ROOTのバージョンが古いと、nestdaq-user-impl のソースコードのコンパイル時にエラーになる。具体的には、saho-a/saho-b にインストールされている ROOT v6.20.06 だとエラーになるが、ROOTの最新版 (v6.28.06) だと問題なかった。以下のコマンドで ROOT のバージョンを確認可能。<code>$ root --version |
ROOT Version: 6.20/06 | ROOT Version: 6.20/06 |
<以下の行を最下部あたりに追記> | <以下の行を最下部あたりに追記> |
# Setup for ROOT version 6.28/06 | # Setup for ROOT version 6.28/06 |
source PATH=$HOME/local/root_v6.28.06/root/bin/thisroot.sh:$PATH | source $HOME/local/root_v6.28.06/root/bin/thisroot.sh |
</code> | </code> |
* .bashrc を編集したら、.bashrc を読み込み、ROOT のバージョンを確認する。<code>$ source $HOME/.bashrc | * .bashrc を編集したら、.bashrc を読み込み、ROOT のバージョンを確認する。<code>$ source $HOME/.bashrc |
$ root --version | $ root --version |
</code> | ROOT Version: 6.28/06 |
| Built for linuxx8664gcc on Aug 28 2023, 11:29:15 |
| From tags/v6-28-06@v6-28-06 |
| </code>というように、ROOT Version: 6.28/06 となっていたらOK。 |
| |
| |
| |
==== インストール ==== | ==== NestDAQ 本体のインストール ==== |
* 2023年10月12日(木)現在、NestDAQのインストール方法に関するドキュメントはいくつかある。本家の GitHub のリポジトリの以下のインストール方法が公式と思われるが、CMAKE_PREFIX_PATHの指定が不要なところもあり、新しめのインストール方法のメモを見るのが良さそう。 | * 2023年10月12日(木)現在、NestDAQのインストール方法に関するドキュメントはいくつかある。本家の GitHub のリポジトリの以下のインストール方法が公式と思われるが、CMAKE_PREFIX_PATHの指定が不要なところもあり、新しめのインストール方法のメモを見るのが良さそう。 |
* https://github.com/spadi-alliance/nestdaq/blob/main/INSTALL.md | * https://github.com/spadi-alliance/nestdaq/blob/main/INSTALL.md |
Disabled | Disabled |
</code> | </code> |
* さらに、一般に、DAQの開発段階では firewall は切っておきたいところだが、saho-a / saho-bでは切られていないので面倒なことになるかもしれない。しょうがない。Firewall を切ってくださいと計算機室にお願いするときっと怒られるので注意。 | * さらに、一般に、DAQの開発段階では firewall は切っておきたいところだが、saho-a / saho-bでは切られていないので面倒なことになるかもしれない。しょうがない。Firewall を切ってくださいと計算機室にお願いするときっと怒られるので注意。redis, RedisTimeSeries, |
=== redis のインストール === | === redis のインストール === |
* git でソースをダウンロードしてコンパイル<code> | * git でソースをダウンロードしてコンパイル<code> |
#daq-webctl >& $NESTDAQ/log/daq-webctl.log & | #daq-webctl >& $NESTDAQ/log/daq-webctl.log & |
daq-webctl --http-uri http://0.0.0.0:5920 --redis-uri tcp://127.0.0.1:5921 >& /dev/null & | daq-webctl --http-uri http://0.0.0.0:5920 --redis-uri tcp://127.0.0.1:5921 >& /dev/null & |
</code>ちなみに、daq-webctl のオプションで 5920 というポート番号を指定している。すでにこのポートが他のユーザーに使われていたら、5921 などの番号を指定する。saho-a/saho-bの場合外部からアクセスできるポートは限られているが、5901 - 5999あたりは空いているので、ここを使う。ポートがすでに使われているかどうかは以下のコマンドで確認可能。<code> | </code>ちなみに、daq-webctl の --port オプションで DAQ controller のHTTPサーバーのポートを 5920 にしている。さらに、redis-server のポート番号は 5921 にしている。すでにこのポートが他のユーザーに使われていたら、他の番号を指定する。ただし、saho-a/saho-bの場合は 5901 -5999 あたりの番号をしているのが良い。他のポート番号はだいたい外部からのアクセスができないので注意。ここで 5920 と 5921 以外の番号を指定した場合、以下の文章では適宜 5920 と 5921 の部分の番号を読み替える。ポートが他のユーザーに使われているかどうかは以下のコマンドで確認可能。<code> |
$ netstat -at | grep 5920 | $ netstat -at | grep 5920 |
tcp 0 0 0.0.0.0:5920 0.0.0.0:* LISTEN | tcp 0 0 0.0.0.0:5920 0.0.0.0:* LISTEN |
tcp6 0 0 [::]:5921 [::]:* LISTEN | tcp6 0 0 [::]:5921 [::]:* LISTEN |
</code> | </code> |
* さらに、実行権限を付与<code> | * init.sh に実行権限を付与<code> |
$ chmod +x ./init.sh | $ chmod +x ./init.sh |
</code> | </code> |
</code> | </code> |
| |
==== 動かしてみる ==== | ==== NestDAQ 本体付属のサンプルプログラムを動かしてみる ==== |
* run ディレクトリに移動<code> cd $HOME/run | * run ディレクトリに移動<code> cd $HOME/run |
</code> | </code> |
| |
==== nestdaq-user-impl のインストール ==== | ==== nestdaq-user-impl のインストール ==== |
| * NestDAQ 本体をインストールしたら、 nestdaq-user-impl (ユーザーが実験ごとに編集するユーザーソース部分) をインストールする。 |
* nestdaq-user-impl を make するには、新しい ROOT が必要。ROOTのバージョンが古い場合は、新しいROOTをインストールする。インストール方法は、このページの準備の項目を参照。 | * nestdaq-user-impl を make するには、新しい ROOT が必要。ROOTのバージョンが古い場合は、新しいROOTをインストールする。インストール方法は、このページの準備の項目を参照。 |
* 新しい ROOT をインストールしたら、nestdaq-user-impl をコンパイル。<code>$ cd $HOME/nestdaq/src | * 新しい ROOT をインストールしたら、nestdaq-user-impl をコンパイル。<code>$ cd $HOME/nestdaq/src |
| |
==== nestdaq-user-impl (TFBFilePlayer - fltcoin - tfdump) の実行 ==== | ==== nestdaq-user-impl (TFBFilePlayer - fltcoin - tfdump) の実行 ==== |
* 五十嵐さんの以下のドキュメントを参考に、Data Replayer を動かしてみる。 | * nestdaq-user-impl がインストールできたら、五十嵐さんの以下のドキュメントを参考に、試しに Data Replayer を動かしてみる。 |
* Data replayer の動かし方: https://docs.google.com/document/d/1oBinmPbCu2nJ7lIiAZuBauSBQh_Zdi8SVdp4Hsh-2Wo/edit?pli=1# | * Data replayer の動かし方: https://docs.google.com/document/d/1oBinmPbCu2nJ7lIiAZuBauSBQh_Zdi8SVdp4Hsh-2Wo/edit?pli=1# |
* 手元のパソコンに Replayer 用のRawデータファイルと、topo_player.sh をダウンロードする。<code>$ wget http://www-online.kek.jp/~igarashi/nestdaq/run000408_00_stf.dat.gz | * 手元のパソコンに Replayer 用のRawデータファイルと、topo_player.sh をダウンロードする。<code>$ wget http://www-online.kek.jp/~igarashi/nestdaq/run000408_00_stf.dat.gz |
$ scp topo_player.sh saho-a:run/ | $ scp topo_player.sh saho-a:run/ |
</code> | </code> |
* コピーしたら、saho-a にログインして、コピーしたファイルを解凍。<code>$ ssh kobayash@saho-a | * コピーしたら、saho-a にログインして、コピーしたファイルを解凍。run000408_00_stf.dat, run000410.dat というファイルができるはず。<code>$ ssh kobayash@saho-a |
Passowrd: | Passowrd: |
$ cd $HOME/run | $ cd $HOME/run |
... run000408_00_stf.dat run000410.dat ... | ... run000408_00_stf.dat run000410.dat ... |
</code> | </code> |
* saho-a 上で redis-server と daq-webctl が立ち上がっているか ps コマンドで確認。立ち上がっていなかったら、init.sh を実行。<code>$ ps aux | grep redis | * saho-a 上で redis-server と daq-webctl がすでに立ち上がっているか ps コマンドで確認。立ち上がっていなかったら、init.sh を実行。<code>$ ps aux | grep redis |
$ ps aux | grep daq-webctl | $ ps aux | grep daq-webctl |
$ ./init.sh</code> | $ ./init.sh</code> |
* 五十嵐さんの topo_player.sh の最初の行の方を以下の様に編集。redis-server のポート番号を 5921 にしている。<code> | * topo_player.sh の最初の行の方を以下の様に編集。redis-server のポート番号を 5921 にしている。<code> |
#!/bin/bash | #!/bin/bash |
| |
* | * |
==== nestdaq-user-impl (STFBplayer - FileSink/Scaler) の実行 ==== | ==== nestdaq-user-impl (STFBplayer - FileSink/Scaler) の実行 ==== |
* まず、以下の内容の topology_stbplayer_scr.sh を作成。<code> | * まず、以下の内容の topology_stbplayer_scr.sh を作成。redis-server のポート番号は 5921 にしている。<code> |
#!/bin/bash | #!/bin/bash |
| |
#--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- |
| |
endpoint STFBFilePlayer out type push method connect | endpoint STFBFilePlayer out type push method connect portRangeMin 5951 portRangeMax 5970 |
endpoint STFBFilePlayer dqm type push method connect | endpoint STFBFilePlayer dqm type push method connect portRangeMin 5951 portRangeMax 5970 |
| |
endpoint Scaler in type pull method bind | endpoint Scaler in type pull method bind portRangeMin 5951 portRangeMax 5970 |
endpoint Scaler out type push method connect | endpoint Scaler out type push method connect portRangeMin 5951 portRangeMax 5970 |
| |
endpoint FileSink in type pull method bind | endpoint FileSink in type pull method bind portRangeMin 5951 portRangeMax 5970 |
endpoint ScrSink in type pull method bind | endpoint ScrSink in type pull method bind portRangeMin 5951 portRangeMax 5970 |
| |
echo "---------------------------------------------------------------------" | echo "---------------------------------------------------------------------" |
link Scaler out ScrSink in | link Scaler out ScrSink in |
</code> | </code> |
* mq_param_stbplayer_scr.sh を作成。<code> | * mq_param_stbplayer_scr.sh を作成。redis-server のポート番号は 5921 にする。<code> |
#!/bin/bash | #!/bin/bash |
| |
param Scaler-0 num-source 1 prefix scr ext .dat | param Scaler-0 num-source 1 prefix scr ext .dat |
</code> | </code> |
* start_device.sh を編集し、以下のように、DQM_URI を追加。さらに、redis-server のポート番号を 5921に変更。<code> | * start_device.sh を編集し、以下のように、DQM_URI を追加。さらに、/home/nestdaq/の部分を $HOME に変更。さらに、redis-server のポート番号を 5921 に変更。<code> |
#!/bin/bash | #!/bin/bash |
| |
METRICS_URI=' --metrics-uri tcp://127.0.0.1:5921/1' | METRICS_URI=' --metrics-uri tcp://127.0.0.1:5921/1' |
CONFIG_URI=' --parameter-config-uri tcp://127.0.0.1:5921/2' | CONFIG_URI=' --parameter-config-uri tcp://127.0.0.1:5921/2' |
DQM_URI=' --dqm-uri tcp://127.0.0.1:5921/3' | DQM_URI=' --scaler-uri tcp://127.0.0.1:5921/3' |
| |
#--------------------------------------------------------- | #--------------------------------------------------------- |
BINDIR="" | BINDIR="" |
else | else |
BINDIR=/home/nestdaq/nestdaq/bin | BINDIR=$HOME/nestdaq/bin |
fi | fi |
| |
PLUGIN_LIBDIR=/home/nestdaq/nestdaq/lib | PLUGIN_LIBDIR=$HOME/nestdaq/lib |
| |
PLUGIN_SEARCH_PATH=" -S '<$PLUGIN_LIBDIR'" | PLUGIN_SEARCH_PATH=" -S '<$PLUGIN_LIBDIR'" |
* ファイルを保存する場所を作成。<code>$ mkdir scr scrdata data | * ファイルを保存する場所を作成。<code>$ mkdir scr scrdata data |
</code> | </code> |
* /hoemnestdaq/run ディレクトリで tmux を立ち上げ、4分割 (Ctrl-b % と Ctrl-b " を使う。パネル移動は Ctrl-b o。)し、FairMQ デバイスを立ち上げる。 <code> | * /hoem/nestdaq/run ディレクトリで tmux を立ち上げ、4分割 (Ctrl-b % と Ctrl-b " を使う。パネル移動は Ctrl-b o。)し、FairMQ デバイスを立ち上げる。 <code> |
<パネル 1> | <パネル 1> |
$ ./start_device.sh STFBFilePlayer --wait 1000 --in-file run000408_00_stf.dat | $ ./start_device.sh STFBFilePlayer --wait 1000 --in-file run000408_00_stf.dat |
$ ./start_device.sh FileSink | $ ./start_device.sh FileSink |
</code>ちなみに、STFBFilePlayer --wait 1000 は 1000 ms wait している。wait がないと一瞬でファイルを読んでしまう。ただし、mq_param.sh で STFBFilePlayer-0 に wait を設定していると、それで上書きされる。実行時のオプションより redis のパラメータの方が優先されるので注意。redis をクリアする必要あり。 | </code>ちなみに、STFBFilePlayer --wait 1000 は 1000 ms wait している。wait がないと一瞬でファイルを読んでしまう。ただし、mq_param.sh で STFBFilePlayer-0 に wait を設定していると、それで上書きされる。実行時のオプションより redis のパラメータの方が優先されるので注意。redis をクリアする必要あり。 |
* 手元のパソコンで web ブラウザを立ち上げ、http://saho-a:5920 にアクセスしする。 | * 手元のパソコンで web ブラウザを立ち上げ、http://saho-a:5920 にアクセスする。 |
* RUN number の New value: に任意の数字を入力し、 [ Send ] ボタンを押す。 | * RUN number の New value: に任意の数字を入力し、 [ Send ] ボタンを押す。 |
* [Init Device and Connection] > [ Init Task ] > [ Run ] ボタンを順次押すと、実行される。 | * [Init Device and Connection] > [ Init Task ] > [ Run ] ボタンを順次押すと、実行される。 |
| |
==== SlowDash のインストール ==== | ==== SlowDash のインストール ==== |
* SlowDash の20230608 版をダウンロード: https://www.rcnp.osaka-u.ac.jp/mattermost/spadi-alliance/pl/e57nuxyswpg8irahb1fh5mz9ca | * Scaler の情報をオンラインで見るために、SlowDash をインストールする。Scaler 情報は一旦 redis データベースに書き込まれ、SlowDash はこのデータにアクセスして表示を行う。まず、SlowDash の20230608 版を手元のパソコンにダウンロード。リンクはこちら: https://www.rcnp.osaka-u.ac.jp/mattermost/spadi-alliance/pl/e57nuxyswpg8irahb1fh5mz9ca |
* 解説はこちら: https://www.rcnp.osaka-u.ac.jp/mattermost/spadi-alliance/pl/k64keksqxty9fgr7drpy9w4zze | * ちなみに、SlowDashの解説はこちらのページを参照: https://www.rcnp.osaka-u.ac.jp/mattermost/spadi-alliance/pl/k64keksqxty9fgr7drpy9w4zze |
* ダウンロードした SlowDash-230608.tgz を /home/nestdaq/nestdaq/src/ にコピーし、解凍。<code> | * ダウンロードした SlowDash-230608.tgz を /home/kobayash/nestdaq/src/ にコピーし、解凍。<code> |
$ cp $HOME/Downloads/SlowDash-230608.tgz $HOME/nestdaq/src/ | $ cp $HOME/Downloads/SlowDash-230608.tgz $HOME/nestdaq/src/ |
$ cd $HOME/nestdaq/src | $ cd $HOME/nestdaq/src |
type: Redis | type: Redis |
parameters: | parameters: |
url: redis://localhost:6379/ | url: redis://localhost:5921/ |
time_series: {db: 1} | time_series: {db: 1} |
object: { db: 3 } | object: { db: 3 } |
* {{:softwares:nestdaq:redis_histo_result.png?400|}} | * {{:softwares:nestdaq:redis_histo_result.png?400|}} |
| |
==== メモ ==== | |
* Raspberry Pi で FairMQ を make するとき、atomic ライブラリのリンクでエラーとなっていたが、Ubuntuではエラーにならない。Raspberry Pi では cmake コマンドのオプションに -DCMAKE_CXX_LINK_FLAGS="-Wl,--no-as-needed -latomic"としていたが、Ubuntuでは必要なかった。atomic はデフォルトでリンクされるようだ? | |
* nestdaq-user-impl make 時のエラー。<code> | |
[ 34%] Linking CXX executable FileSink | |
/usr/bin/ld: CMakeFiles/FileSink.dir/FileSink.cxx.o: warning: relocation against `_ZN5boost9iostreams5bzip210stream_endE' in read-only section `.text._ZN5boost9iostreams16symmetric_filterINS0_6detail21bzip2_compressor_implISaIcEEES4_E5closeINS0_20non_blocking_adapterINS2_16linked_streambufIcSt11char_traitsIcEEEEEEEvRT_St13_Ios_Openmode[_ZN5boost9iostreams16symmetric_filterINS0_6detail21bzip2_compressor_implISaIcEEES4_E5closeINS0_20non_blocking_adapterINS2_16linked_streambufIcSt11char_traitsIcEEEEEEEvRT_St13_Ios_Openmode]' | |
/usr/bin/ld: CMakeFiles/FileSink.dir/FileSink.cxx.o: in function `boost::detail::sp_counted_impl_p<boost::iostreams::symmetric_filter<boost::iostreams::detail::bzip2_compressor_impl<std::allocator<char> >, std::allocator<char> >::impl>::dispose()': | |
FileSink.cxx: | |
... | |
/usr/bin/ld: CMakeFiles/FileSink.dir/FileSink.cxx.o: in function `void boost::iostreams::detail::close_all<boost::iostreams::basic_bzip2_compressor<std::allocator<char> >, boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> > >(boost::iostreams::basic_bzip2_compressor<std::allocator<char> >&, boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >&)': | |
FileSink.cxx:(.text._ZN5boost9iostreams6detail9close_allINS0_22basic_bzip2_compressorISaIcEEENS1_16linked_streambufIcSt11char_traitsIcEEEEEvRT_RT0_[_ZN5boost9iostreams6detail9close_allINS0_22basic_bzip2_compressorISaIcEEENS1_16linked_streambufIcSt11char_traitsIcEEEEEvRT_RT0_]+0x49): undefined reference to `boost::iostreams::detail::bzip2_base::end(bool)' | |
/usr/bin/ld: CMakeFiles/FileSink.dir/FileSink.cxx.o: in function `nestdaq::Compressor::CreateFilter(nestdaq::Compressor::Format, int)': | |
FileSink.cxx:(.text._ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi[_ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi]+0x692): undefined reference to `boost::iostreams::detail::bzip2_base::bzip2_base(boost::iostreams::bzip2_params const&)' | |
/usr/bin/ld: FileSink.cxx:(.text._ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi[_ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi]+0xaa2): undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)' | |
/usr/bin/ld: FileSink.cxx:(.text._ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi[_ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi]+0xaaa): undefined reference to `boost::iostreams::detail::bzip2_base::~bzip2_base()' | |
/usr/bin/ld: FileSink.cxx:(.text._ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi[_ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi]+0xaec): undefined reference to `boost::iostreams::detail::bzip2_base::end(bool, std::nothrow_t)' | |
/usr/bin/ld: FileSink.cxx:(.text._ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi[_ZN7nestdaq10Compressor12CreateFilterENS0_6FormatEi]+0xaf4): undefined reference to `boost::iostreams::detail::bzip2_base::~bzip2_base()' | |
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE | |
collect2: error: ld returned 1 exit status | |
make[2]: *** [CMakeFiles/FileSink.dir/build.make:131: FileSink] Error 1 | |
make[1]: *** [CMakeFiles/Makefile2:205: CMakeFiles/FileSink.dir/all] Error 2 | |
make: *** [Makefile:136: all] Error 2 | |
</code>boot のコンパイル時に bzip2 が no になっていたのが原因のようだ。<code> - zlib : yes (cached) [5] | |
- bzip2 : no (cached) [5] | |
- lzma : no (cached) [5] | |
- zstd : yes (cached) [5] | |
- lzma : no (cached) [5] | |
- has_lzma_cputhreads builds : no (cached) [9] | |
</code> sudo apt install libbz2-dev としてから、/home/nestdaq/nestdaq/src/boost ディレクトリを全部削除してから、コンパイルし直した。そうしないと、bzip2 : yes (cached) [5] とならない(他に良い方法あるんだろうか?)。boost をコンパイルし直したあと、ZeroMQ, fmtlib, FairLogger, FairMQ, hiredis, redis-plus-plus, nestdaq, redisinsight を make し直す必要はないようだ。 | |
| |