従来の製品は、gcc 4.4.7が組み込まれている32ビットCentos 6.6に搭載されていますが、glibcの破損によって大きなアプリケーションがクラッシュすることがあります。 gcc 4.8とAddressSanitizer finds "global-buffer-overflow"で再コンパイルし、クラッシュします。しかし、gcc 4.9でコンパイルすると、glibcの破損やAddressSanitizerエラーがなくなります。32ビットのCentos 6で新しい(または両方の)libstdC++を使用するには?
問題はアプリが今libstdc++.so.6.0.20
を必要としなくなっ株価と連動していないCentOSに6 libstdc++.so.6.0.13
(GLIBCXX_blahblah
が見つからない、など)
ので、最善のアプローチは何ですか?
/usr/lib/libstdc++
を新しいものと交換しますか?- 私たちのアプリ(プライベートディレクトリ)に新しい
libstdc++.so.6.0.20
をパッケージし、/etc/ld.so.conf.d
を修正して、システムコピーの前にプライベート/新規ライブラリを読み込みます。
#1では、このファイルは別のパッケージによって所有されているため、今後のアップデートによっても上書きされる可能性があります。また、/usr/lib
のバージョンが更新された場合、既存のプログラムは中断されますか?私はABIとの互換性について多くのことを読んでいますが、それは複雑なテーマです。
ご意見ありがとうございます。
偉大な提案を。ありがとう! – Danny