web-dev-qa-db-ja.com

libstdc ++。so.6:バージョン `GLIBCXX_3.4.20 'が見つかりません

GenebankのSRAに2GBを超える生の読み取りをアップロードするために、ubuntu 16.04にaspera connectプラグインをインストールしました。しかし、プラグインは、genebank SRAポータルの指示に示されているようにポップアップしませんでした。

プラグインをローカルで初期化すると、端末でこのエラーが発生しました(~/.aspera/connect/bin/asperaconnect):

lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/x86_64-linux-gnu/libproxy.so.1)
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so

いくつかのスレッドをたどり、/usr/lib/libstdc++.so.6へのリンクを作成しましたただし、問題は解決せず、上記のエラーメッセージが表示されたままです。 running strings /usr/lib/libstdc++.so.6 | grep GLIBCXX

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
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
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_DEBUG_MESSAGE_LENGTH

GLIBCXX_3.4.20がリストにあります。プラグインにそれを認識させる方法がわかりません。

ありがとう、Xp

9
Xp.L

/usr/lib/x86_64-linux-gnu/libproxy.so.1はUbuntuによって提供されることを考慮して、システムのlibstdc ++ライブラリと互換性があると仮定しましょう。これは、アプリケーションが実際にそのシステムライブラリではなく、他のバージョンを使用していることを意味します。アプリケーションがLD_LIBRARY_PATHを設定しているかどうか、およびそのパスにlibstdc++.so.6の別のコピーがあるかどうかを確認することをお勧めします。この場合、それを遠ざけるか削除してみてください。アプリケーションはシステムライブラリに切り替える必要があります。システムライブラリはより新しく、下位互換性が必要です。

4
Florian Weimer

Ubuntu 16.04でのこの問題の解決策を次に示します

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install gcc-4.9
Sudo apt-get upgrade libstdc++6

次のように、GLIBCXXの目的のバージョンを取得できるかどうかを確認できます。

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
19

このような問題は解決しましたが(CentOSではGLIBCXX_3.4.21)、osに依存していません。ライブラリはgccコンパイラの一部であるため、gccの適切なバージョンをインストールまたはコンパイルする必要があります。これは、gccのバージョンと適切なlibstdc++のバージョンの表です。

GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25

(バージョンの完全なリストは here

Gccのインストール方法に依存しません-パッケージからインストールされるか、ソースからコンパイルおよびインストールされます。

新しくインストールする代わりに、システムgccライブラリを使用できる可能性があります。そのため、たとえば次のようなコマンドラインでライブラリを検索する環境変数を指定する必要があります。

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...
5
oklas

怠zyな人々への答えは、これはほとんどの場合、状況を修正する必要があります

apt-get update && apt-get install Sudo && \
Sudo apt-get install build-essential software-properties-common -y && \
Sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
Sudo add-apt-repository ppa:george-edison55/cmake-3.x -y && \
Sudo apt-get update && \
Sudo apt-get install gcc-snapshot -y && \
Sudo apt-get update && \
Sudo apt-get install gcc-6 g++-6 -y && \
Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && \
Sudo apt-get install gcc-4.8 g++-4.8 -y && \
Sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 && \
Sudo update-alternatives --config gcc && \
Sudo apt-get update && \
Sudo apt-get install cmake -y;
1
Ill.forte