2

再配布可能な .so ファイルを作成しています。

ただし、ユーザーが使用しようとすると、恐ろしい/usr/lib/libstdc++.so.6: version GLIBCXX_3.4.9' not foundエラーが発生します。

objdump を実行すると、バイナリ内のこの特定のシンボルが問題を引き起こしているようです。 _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9

ユーザーがこのエラーを受けないように、古いバージョンの GLIBXX に対してコンパイル/リンクするように gcc/g++ に指示するにはどうすればよいですか?

それとも、この難問から抜け出す唯一の方法は、GLIBXX を持つ別の古いバージョンの Linux をインストールすることですか?

4

2 に答える 2

3

ユーザーがこのエラーを受けないように、古いバージョンの GLIBXX に対してコンパイル/リンクするように gcc/g++ に指示するにはどうすればよいですか?

それを行う方法はありません。あなたの唯一の選択肢は次のとおりです。

  1. g++古いバージョンでビルドする、または
  2. libstdc++.a共有ライブラリに静的にリンクし、そのシンボルを非表示にします (これにはライセンスの影響もある可能性があります。弁護士に確認してください)。
  3. libstdc++.so.6のバージョンをライブラリと一緒にパッケージ化して、古いバージョンを持っているユーザーに代わりに新しいバージョンを入手するように依頼してください (これにはライセンスの影響もありますが、満足しやすいと思います)。
于 2012-04-16T21:34:28.823 に答える
0

GLIBCXX_3.4.9用に構築しているため、ユーザー少なくともGLIBCXX_3.4.9を持っている必要があります。

于 2012-04-16T19:56:31.263 に答える