先日CentOS 7でPhoenixMinerを実行しようとした際に「libstdc」ライブラリ関連のエラーが発生しました。このエラーの解決方法を調査しましたので、備忘録に残しておきたいと思います。
基本的なPhoenixMinerを使用してのマイニング方法は下記記事で解説しています。
使用した環境
- CentOS 7.4.1708
- PhoenixMiner 5.5b
エラー内容
CentOS 7 Coreをクリーンインストールした状態で、PhoenixMinerを実行すると下記のエラーが表示されます。
$ ./start_miner.sh ./PhoenixMiner: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./PhoenixMiner) ./PhoenixMiner: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./PhoenixMiner) ./PhoenixMiner: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./PhoenixMiner) ./PhoenixMiner: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./PhoenixMiner)
これはCentOS7にインストールされている、「libstdc」ライブラリが古く、ソフトウェア(PhoenixMiner)の要求するバージョンのライブラリが存在しないことが原因です。
現在の環境でインストールされているライブラリは、下記コマンドで確認できます。
$ strings /usr/lib64/libstdc++.so.6 | grep -e GLIBCXX -e CXXABI GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_TM_1 GLIBCXX_DEBUG_MESSAGE_LENGTH
GCCをビルドする
最新のGCCライブラリを探す
以下のURLから最新のライブラリを探します。
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
例えば、2021年3月の時点では「gcc-10.2.0」が最新であることがわかります。
GCCライブラリのダウンロード
以下コマンドでGCCのライブラリとチェックサムをダウンロードします。
$ curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.gz $ curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/sha512.sum
ダウンロードしたファイルに間違いがないか下記コマンドで確認します。
$ sha512sum --check sha512.sum
gcc-10.2.0.tar.gzと出力されれば問題ありません。
GCCライブラリのビルド
正常にダウンロードが完了したら、次はライブラリのビルドを行います。
$ tar xzfv gcc-10.2.0.tar.gz -C /usr/local/src $ cd /usr/local/src/gcc-10.2.0/ $ ./contrib/download_prerequisites $ mkdir build $ cd build $ ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib $ make $ make install
上記のビルドが完了したらGCCのバージョンとパスを確認しましょう。
$ gcc --version gcc (GCC) 10.2.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $which gcc /usr/local/bin/gcc
最後に共有ライブラリの参照設定を変更します。
$ cd /etc/ld.so.conf.d $ echo /usr/local/lib64 >> usr_local_lib64.conf $ mv /usr/local/lib64/libstdc++.so.6.0.28-gdb.py /usr/local/lib64/back_libstdc++.so.6.0.28-gdb.py $ ldconfig
以上でGCCライブラリのビルドは完了です。
GCCライブラリを最新にした状態で再度、PhoenixMinerを実行するとエラーなく実行ができると思います。
参考:
https://qiita.com/IntenF/items/dbfe1bef4568719a0133
https://www.saintsouth.net/blog/update-libstdcpp-on-centos6/
コメント