[状況]GLIBCXX(libstdC++。so.6)とgccバージョンの関係
私はC++ライブラリを開発中です。私はGLIBCXXバージョンに問題がありました。
以前は、バージョンマシンGLIBCXX_3.4.22で開発しました。
しかし私のライブラリは、GLIBCXX_3.4.19を持つターゲットマシンでは動作していません。
したがって、gccバージョンを5.2.xから4.8.xに、GLIBCXXバージョンを3.4.22から3.4.19にダウングレードしました。
ターゲットマシンで正常に実行されました。
しかし、私の開発マシン(ubuntu)のブートは、他のライブラリが既にそのバージョンにリンクされているGLIBCXX 3.4.22のバージョンを見つけることができないので失敗します。
私はGLIBCXX 3.4.22を再インストールしましたが、gccのバージョンはまだ4.8.5です。
[質問]
マイライブラリはGLIBCXX_3.4.22バージョンを使用していないGCC-4.8.5でコンパイルしていますか?この環境(gcc 4.8.5、GLIBCXX_3.4.22)で開発するのはいいですか?
Linuxマシン上のgcc(コンパイル)バージョンとGLIBCXX(GLIBC)バージョンの関係は何ですか?
ここで、gccとGLIBCXX(GLIBC)の間の正しいバージョン互換性マッピング情報を確認できますか?
ありがとうございました。私はgccのコンパイルについては分かりませんでした。 gccとglibcの両方のバージョンをダウングレードする必要があります。 –
@ YoonungLee:複数のgccバージョンを同時にインストールできるので、システムライブラリをダウングレードする必要はありません。 「仮想」システムに対してもコンパイルできます。 gccは正しいlibを見つけるために、与えられたシステムディレクトリを調べます。 – Klaus
@Klaus私はgccを動的に変更できます。しかし、gccはコンパイル時に現在のlibversion上でGLIBCライブラリを参照していますか?たとえば、gccバージョン4.8をシステムglibcxx3.4でビルドすると、次のようになります。22の結果birnaryは、システムlibバージョンglibcxx3.4.19で実行することはできません。そうですか?私はシステムlibが他のプログラムによって参照されるので、開発環境でシステムlibを動的に変更しないようにする問題があります。 –