GLIBCXX_3.4.20が見つかりません、このエラーを修正する方法は?


104

私は、Ubuntu 14.04.1 64ビットLTSでプログラムLayout Editorこのサイトで入手可能)を実行しようとしますが、ターミナルに次の出力が表示されます。

$ layout
layout: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by layout)

私は、コマンドを試してみましたstrings上で/usr/lib/x86_64-linux-gnu/libstdc++.so.6、ここで、次のとは入力と出力されますよう:

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

この問題を解決するにはどうすればよいのでしょうGCCか?さらに、Ubuntuで最新のGCCを使用するにはどうすればよいですか?また、GLIBCXX_3.4.15にない Ubuntuの古いバージョンについても同様の質問があります。ただし、実行した後、sudo update多数の警告が表示され、stringsコマンドで取得したリストにはインストール後に新しいエントリがなかったgcc 4.9ため、PPA(Toolchains Test Builds)をで削除しましたppa-purge。助け、進行方法に関する提案は大歓迎です。


すでに解決策を見つけましたか?
スティーブンルース

1
@StevenRooseバックポートを追加してソフトウェアをインストールした後、問題を解決することができましたが、詳細をはっきりと覚えていませんが、それらを覚えているときは答えとして投稿します。
ヴェスノグ

リンクシンボルの効果であると思われる:stackoverflow.com/questions/2856438/...あなたは、単に十分な最近のライブラリバージョンにリンクされていません。
Ciro Santilli新疆改造中心法轮功六四事件

回答:


102

他のプログラムを実行しようとしたときに同じ問題が発生していましたが、StackOverflowで解決策を見つけました。

基本的に、次のコマンドを実行するだけです。まず、インストールします。

sudo apt-get install libstdc++6

これは既にデフォルトでインストールされているはずですが、とにかく試してください。解決しない場合は、次を実行してください。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

「dist-upgrade」コマンドは実行しませんでしたが、前のコマンドで解決しました


6
sudo apt-get dist-upgradeは私の問題を解決しました
-ady

2
必要とせずに解決される問題dist-upgradeとしてupgrade、最新で私のシステムを提案し、更新libstdc++
arainone

2
リポジトリの追加、「更新」および「dist-upgrade」はすべて私の側で必要でした。
virtualxtc

5
更新後、GLIBCXXの最新バージョンを次のように確認できますstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya

1
Ubuntu 16.04:2017年11月、GLIBCXX_3.4.24までのadd- updateを介して 'untrusted、and unsupported' ppa:ubuntu-toolchain-r / testapt-repository追加/usr/lib/x86_64-linux-gnu/libstdc++.so.6し、さらに、これはbasicall ALL c / c ++ / fortranを更新しますマシン上の開発ツール
knb

60

(@mjpが述べたように)anaconda 4.0.0で私に起こりましたが、私のための修正は私の環境でこのコマンドを実行することでした:

conda install libgcc

6
他のスレッドから多くのソリューションを試した後、これは私にとってそれを解決しました。
ショーンアンダーソン

3
Ubuntu 16.04でも動作します
-fviktor

1
これにより、お尻が数回節約されました!
MBZ

Ubuntu 16.04-私のためにそれを解決しました。
ジュバル

これははるかに優れています..私のために働いた
..Pythonで

11

私はこの問題を抱えていました-それはそれがAnaconda2何であれGLIBCXX_3.4.20バージョンを持っていなかったためでした。あなたと同じ.19までのみ。

ただし、Ubuntuのライブラリには含まれていました。そのため、GLIBCXX_3.4.20を含む実際のLinuxライブラリへのAnacondaライブラリにソフトリンク/ショートカットを作成し、以前のものを置き換えました。PythonGUI(Spyder)を再起動した後、正常に機能しました。

libstdc++.so.6Anacondaライブラリには、次のフォルダーがあります~/anaconda2/lib。このフォルダー内には、不足しているバージョンを除くscript / library-code-thingのバージョンがあります:GLIBCXX_3.4.20

次の手順に従って問題を解決してください。

  1. 適切な場所に移動して、現在のショートカットをバックアップしますanaconda2(上書きされないように名前を変更します)。

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. lnコマンドを使用して新しいショートカットを作成します(以前の場所〜/ anaconda2 / libにいると仮定しています):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. スパイダー/使用する他のインターフェイスを再起動します

これで動作するはずです!


私にとっては、conda .soの名前を変更するだけで十分で、リンクを必要とせずにosバージョンが見つかりました
Mingwei Samuel

7

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

(バージョンの完全なリストはこちら

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

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

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

このコマンド/usr/lib64/libstdc++.so.6で使用/usr/local/lib64/libstdc++.so.6していた新しいバージョンを指すようにリンクを更新することにより、これを永続的に修正しましたln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6。元に戻す必要がある場合、古いバージョンはそれを指すリンクなしで残ります。ハッキングのビットが、それは動作します。
マシュー

2

私は何年にもわたって多くの異なるパッケージで何度もそれを経験しました。これは常に次の方法で解決されています。

sudo apt-get dist-upgrade

distがアップグレード可能な場合、ほとんどの場合、新しいC ++ライブラリがダウンし、動作するように再構成されます。この問題は、ほとんどの場合、システムが適切なライブラリを指していないことが原因です。私の場合、通常はライブラリのクロスコンパイラバージョンを指していることが原因です。


2

before_install:

#この回避策は、SASSサポート付きの「拡張」hugoの実行中にlibstdc ++エラーを回避するために必要です。

  • wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
  • sudo dpkg --force-all -i libstdc++6

インストール:

  • wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
  • sudo dpkg -i hugo.deb

ここでこの解決策を見つけまし


1
sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/

5
Ask Ubuntuへようこそ!この回答を編集して、このコマンドが何を達成するかについての具体的な詳細を追加することをお勧めします。(も参照してください?どのように私は良い答えを書きます。Ubuntuの問合せに最も貴重と考えられている回答のどのような種類に関する一般的なアドバイスのために)
デビッド・フェルスター

6
なぜcpありませんかln -s
AB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.