だから私は今、この修正を見つけるのに必死です。共有ライブラリ.soをUbuntu 32ビットでコンパイルしています(DebianおよびUbuntu 64ビットでそれを試しましたが、どちらも動作しませんでした)
プラグインを読み込もうとするたびに/usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15' not found
を取得し続けます。
このエラーが発生する方法は次のとおりです。
ここに私が見つけて試したリンクがいくつかありますが、私にとってはうまくいきませんでした:
(私の古い質問:この質問を投稿してから数日後に何らかの形で修正されましたが、どのように正確に行ったか覚えていません)
Libstdc ++(i think)をあるディレクトリに移動し、idkをそのディレクトリにポイントまたはリンクすることで修正した人もいますが、それはただ戸惑っています。
誰でも修正を知っていますか?
(編集:)-実行中:strings /usr/lib/libstdc++.so.6 | grep GLIBC
ターミナルでstrings '/usr/lib/libstdc++.so.6': No such file
が表示されます。それが問題でしょうか?もしそうなら、このライブラリをどのようにインストールしますか?
(Edit2 :)他の誰かが解決策を知っていますか?
(Edit3)まだ解決策が必要です。共有ライブラリがコンパイルされたディストリビューションを確認する方法はありますか?私はかつてこの同じライブラリをコンパイルしたことを知っていますが、思い出せません!!
(Edit4)ldd my_lib_.so
は以下を提供します:
linux-gate.so.1 => (0xb77d7000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000)
/lib/ld-linux.so.2 (0xb77d8000)
ldd program_im_loading_so_into
は以下を提供します:
linux-gate.so.1 => (0xb77d8000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000)
/lib/ld-linux.so.2 (0xb77d9000)
strings /usr/lib/i386-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バージョンを示します。
`gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)`
-static-libstdc++
gccオプションを使用してlibstdc ++に静的にリンクします。
次をインストールしてこの問題を修正しました:Sudo apt-get install libstdc++6
私の場合、MongoDB 3.0.1のインストール後にこの問題に遭遇しました。
mongo:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョン `GLIBCXX_3.4.18 'が見つかりません(mongoに必要)
デフォルト以外のリポジトリから最新バージョンをインストールするだけです:
$ Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ Sudo apt-get update
$ Sudo apt-get install libstdc++6-4.7-dev
この問題は、最新のlibstdc ++をインストールすることで解決できます。
$ Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ Sudo apt-get update
$ Sudo apt-get install libstdc++6-7-dbg
上で、あなたは、あなたの複製するためのステップの一部としてあなたがコンパイルすることについて言及しましたが、それから、下で、あなたは、
「共有ライブラリがどのディストリビューションでコンパイルされたかを確認する方法はありますか?」
これを同じディストリビューションでコンパイルしたかどうか、そして同じディストリビューションの異なるバージョンでさえ、特にC++アプリケーションでは重要な詳細です。
Libstdc ++を含むc ++ライブラリへのリンクは、私が知る限り、結果が混在する可能性があります。これは、C++の異なるバージョンでの再コンパイルに関する関連する質問です。
c ++ 11でライブラリを再コンパイルする必要がありますか?
基本的に、異なるディストリビューション(および場合によっては異なるgccバージョン)でc ++に対してコンパイルした場合、これが問題の原因になる可能性があります。
次の2つのオプションがあると思います。
誰かが私と同じ問題を抱えている場合-Ubuntu 14.04リポジトリから12.04マシンにインストールしないようにしてください-このエラーが発生します。適切なリポジトリから再インストールすると、問題が修正されました。
これは私のために働いた:
cp <path_to>/libstdc++.so.6 $PWD
./<executable>
この情報は@kerinから来ました(上記のコメント):
あなたがチェックアウトするかもしれません http://stackoverflow.com/questions/13636513/linking-libstdc-statically-any-gotchas
そのリンクから:
新しいlibstdc ++。soを実行可能ファイルと同じディレクトリに配置すると、実行時に検出され、問題が解決します。
Libstdc ++。so.6は/ usr/lib64 /から来ているというエラーが出ていましたが、これはリンク先のライブラリではありません!メッセージは次のように見えました。
<executing_binary>: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by <executing_binary>)
LD_LIBRARY_PATHにディレクトリがあること(およびそれが最初のパスであること)を確認しました。何らかの理由で、実行時にまだ/usr/lib64/libstdc++.so.6を見ていました。
上記の記事からアドバイスを受けて、実行可能ファイルを含むディレクトリにリンクした場所からlibstdc ++。so.6をコピーし、そこから実行すると動作しました!
おそらく、この質問に対する答えもここで役立ちます: libstdc ++。so.6を見つける方法:RHEL 6のGLIBCXX_3.4.19を含む?
curl -O http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6-4.7-dbg_4.7.2-5_i386.deb
ar -x libstdc++6-4.7-dbg_4.7.2-5_i386.deb && tar xvf data.tar.gz
mkdir backup
cp /usr/lib/libstdc++.so* backup/
cp ./usr/lib/i386-linux-gnu/debug/libstdc++.so.6.0.17 /usr/lib
ln -s libstdc++.so.6.0.17 libstdc++.so.6