2012-04-16 12 views
2

私はredistrbutable .soファイルを構築しています。'GLIBCXX_3.4.9が見つかりませんでしたエラー'を取り除くには?

しかし、私のユーザーがそれを使用しようとすると、恐れを受ける/usr/lib/libstdc++.so.6: version GLIBCXX_3.4.9' not foundエラーが発生します。 objdumpのをやって

、その問題を引き起こしている私のバイナリでは、この特定のシンボル思わ: _ZSt16__ostrea[email protected]@GLIBCXX_3.4.9

私は私のようにGLIBXXの古いバージョンに対して/リンクをコンパイルするために私のgcc/gで++を伝えるにはどうすればよいですユーザーはこのエラーを受け取りませんか?

これは、GLIBXXを持つ別の古いバージョンのLinuxをインストールする唯一の方法ですか?

+0

C/C++ライブラリに静的にリンクすることもできます。 – trojanfoe

+0

私は傾ける。私の図書館は閉鎖されたソースであり、静的リンクはそれにgplライセンスを適用します – pdeva

+0

本当ですか? http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.license.what – trojanfoe

答えて

3

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

は、の方法です。あなたの唯一の選択肢は次のとおりです。古いg++バージョンと

  1. ビルド、または静的共有ライブラリへ
  2. リンクlibstdc++.a、および隠すそのシンボル(これはまた、あなたの弁護士に確認し、ライセンスの意味合いを持っている場合があります)。
  3. あなたのバージョンのlibstdc++.so.6をあなたのライブラリと一緒にパッケージ化し、古いバージョンを持っているユーザーに新しいバージョンを手配するよう依頼してください(ライセンスの影響もありますが、
0

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

+1

私は知っています。事は私のユーザーの大部分ではありません。だから私はgccに下位バージョンをビルドするように指示する方法を知る必要があります。余分な引数を渡すか、linuxの古いバージョンをインストールするだけですか? – pdeva

関連する問題