web-dev-qa-db-ja.com

/usr/lib/libstdc++.so.6:バージョン `GLIBCXX_3.4.15 'が見つかりません

UbuntuでGLIBCXX_3.4.15を取得するにはどうすればよいですか?コンパイル中のプログラムを実行できません。

私がする時:

strings /usr/lib/libstdc++.so.6 | grep GLIBC

私は得る:

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
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

助けてくれてありがとう!

128
Chris

私はソースからgcc 4.6をコンパイルしています、どうやら

Sudo make install 

これをキャッチしませんでした。私は周りを掘って見つけた

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15

それを/ usr/libにコピーし、新しいものを指すようにlibstdc ++。so.6をリダイレクトしましたが、今ではすべてが機能します。

77
Chris

過去に、実行可能ファイルをリンクするときにg ++に送信されるこのパラメーターにlibstdc ++を静的にリンクするだけで、この問題を回避しています。

-static-libstdc++

ライブラリ内の静的リンクがオプションである場合、これがおそらく最も迅速な回避策です。

46
Martin G

私はclangを動作させようとしていましたが(これには6.0.15も必要です)、いじくり回していると、/usr/local/lib/libstdc++.so.6.0.15にインストールされていることがわかりました。グラファイト(実験的なgccバージョン)をインストールしたときにインストールされました。

その場所のライブラリにアクセスする必要がある場合は、LD_LIBRARY_PATHを次のように定義する必要があります。

export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64

これを行った後、clangを動作させることができました。それが誰かに役立つことを願っています。

43
Hobo

Matlab engを使用してcコードからm関数を呼び出そうとすると、この問題が発生します。コマンドmex -f .. ..で発生します

私の解決策:

strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC

3.4.15が含まれていることがわかりました

私のシステムには最新のライブラリがあります。

問題はmatlab自体に由来し、{MATLAB}/binから独自のlibstdc ++。so.6を呼び出します

そのため、更新されたシステムライブラリに置き換えるだけです。

12
Cheng Chang

同じエラーが発生しました。これは私のために働いた方法です:

  • 現在インストールされているgccの下でプロジェクトをクリーンアップしました
  • 再コンパイルした

完全に機能しました!

2
iueae

LLVM 3.7バージョンをビルドするとき、同様の問題に直面しました。まず、必要なライブラリがシステムにインストールされているかどうかを確認します。

$locate libstdc++.so.6.*

次に、見つかった場所を$ LD_LIBRARY_PATH環境変数に追加します。

2
Arsen

このエラーのために、他のサーバーから最新のlibstdc ++。so.6.0.17をコピーし、ソフトリンクを削除して再作成しました。

1。 libstdc ++。so.6.0.15または最新のファイルを他のサーバーから影響を受けるシステムにコピーします。
私の場合、SUSE linux 11 SP3が最新でした。
2。 rm libstdc ++。so.6
3。 ln -s libstdc ++。so.6.0.17 libstdc ++。so.6(/ usr/lib64ディレクトリの下)。

nJoy

2
crazyLinux

gccバージョン4.8.1では、エラーは次のようになります。

/ root/bllvm/build/Release + Asserts/bin/llvm-tblgen:/usr/lib64/libstdc++.so.6:バージョン `GLIBCXX_3.4.15 'が見つかりません(/ root/bllvm/build/Release + Asserts /で必要) bin/llvm-tblgen)

Gcc 4.8.1をコンパイルした場所でlibstdc ++。so.6.0.18を見つけました

それから私はこれが好きです

cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/

rm /usr/lib64/libstdc++.so.6

ln -s libstdc++.so.6.0.18 libstdc++.so.6

問題が解決しました。

2
Favoorr

ターゲットマシンを制御しない場合があります(たとえば、ロックダウンされたエンタープライズシステムでライブラリを実行する必要がある場合)。そのような場合、GLIBCXXバージョンに対応するGCCのバージョンを使用してコードを再コンパイルする必要があります。その場合、次のことができます。

  1. ターゲットマシンでサポートされているGLIBCXXの最新バージョンを検索します:strings /usr/lib/libstdc++.so.6 | grep GLIBC ...バージョンが3.4.19であるとします。
  2. https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html を使用して、対応するGCCバージョンを見つけます。私たちの場合、これは[4.8.3, 4.9.0)です。
1
Gili

RPMからそれらを抽出し( libstdc ++の場合はRPM )、その後:

export LD_LIBRARY_PATH=.

現在のディレクトリでライブラリを検索するようにシステムを設定します。それからちょうど私のプログラムを実行しました。しかし、私の場合、必要な単一の実行可能ファイルを受け取りましたが、システム全体の変更ではありませんでした。

1
prmottajr

ビルド中に-static-libstdc ++を使用しました。 w /それ、a.outを実行できます

g++ test.cpp -static-libstdc++
0
Suresh

私の場合、LD_LIBRARY_PATHには/ usr/local/lib64の前に最初に/ usr/lib64がありました。 (llvm 3.9を作成していました)。
llvm 3.9をコンパイルするためにインストールした新しいgccコンパイラーには、/ usr/local/lib64の下に新しいGLIBCXXライブラリーを使用するライブラリーがありました。
これでこの問題は解決しました。

0
Chan Kim

私は同様の問題を抱えていましたが、libstdc++をコンパイル中のプログラムに静的にリンクすることで解決しました:

$ LIBS=-lstdc++ ./configure ... etc.

いつもの代わりに

$ ./configure ... etc.

実行時の共有ライブラリのロードに関連するこのソリューションには問題がある可能性がありますが、コメントするほど深くこの問題を検討していません。

0
Evgeni Sergeev

Gccバージョン4.8.1 (GCC)およびlibstdc++.so.6.0.18でも同じです。私のubuntuボックスの/usr/lib/x86_64-linux-gnuここにコピーしなければなりませんでした。

0

以前にも同じ問題があり、これを修正しました。これは手順を見つけることができました matlabでエラー「GLIBCXX_3.4.15」を修正

0
ZijunLost

ユーザーを自分から他の誰かに変更したため、同じ問題が発生しました。

su

何らかの理由で、通常のコンパイルを実行した後、実行できませんでした(同じエラーメッセージ)。他のユーザーアカウントに直接sshが機能します。

0
SmallChess

GLIBCXX_3.4.14でのバグGCCの新しいバージョンをインストールする必要があります。 http://pkgs.org/download/libstdc++.so.6 goto:

http://geeksterminal.com/how-to-install-glib-glibc/1392/

そして指示に従います。

0
Marco Silva

Gccコンパイラの複数のバージョンがインストールされていて、デフォルトのインストールよりも新しいバージョンを使用する必要がありました。私はLinuxシステムのシステム管理者ではないので、/ usr/libまたは上記の他の提案の多くを変更することはできません。私はこの問題に遭遇していましたが、最終的には64ビットライブラリ(lib64)ディレクトリではなく32ビットライブラリディレクトリへのパスを設定するまで追跡しました。 32ビットディレクトリ内のライブラリには互換性がないため、システムはデフォルトで古いバージョンになりました。

参照しているパスに-Lを使用すると、「-lstdc ++を検索するときに互換性のないlibstdc ++。soをスキップする」という警告が表示されました。これが最終的に問題を解決するのに役立つヒントでした。

0
Cathy