【CentOS】PhoenixMiner実行時にlibstdc関連のエラーが出る

先日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」が最新であることがわかります。

以降で記載するライブラリのバージョン「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ライブラリのビルド

正常にダウンロードが完了したら、次はライブラリのビルドを行います。

下記のビルドの工程の「make」コマンドはかなりの時間を要します。
私の場合は3時間ほどかかりました。

$ 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/

コメント

タイトルとURLをコピーしました