
UbuntuコンピュータでC ++アプリケーションを作成しました。 Centosマシンにバイナリをコピーしました。エラーが発生しました:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
必要と思われるパッケージをインストールしました。
yum install gcc gcc-c++ make openssl-devel
それでも同じエラーが発生します。
その後、開発ツール全体をインストールしました。
yum groupinstall 'Development Tools'
それでも同じエラーが発生します。この問題を解決するには?
UPD
私はglibc
次のコマンドを使用して、自分のコンピュータにどのバージョンがあるかを確認することにしましたldd --version
。
Ubuntu: 2.23
Centos6.9: 2.12
Ubuntuバージョン2.23CentOS
について文句を言うのはなぜですか?GLIBCXX_3.4.21
glibc
答え1
これはCentOS7で私にとって効果的でした。
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths
答え2
存在しません(EPELリポジトリもアクティブなCentos 7システムで)。
$ sudo yum whatprovides '*libstdc++*' | egrep -o '3\.4\.[0-9]+' | sort -u
...
したがって、それを提供するリポジトリを探すか、適切なバージョンのライブラリを直接コンパイルし、適切なバージョンのライブラリを使用するようにバイナリをパッチする必要があります。あるいは、3.4.19
これが上記のコマンドが私に提供した最も高い数字であると考えてください(Centos 7の場合、Centos 6以下では間違いなくより低い数字を使用できます)。