2011-04-05 20 views
1

GLIBCXX_3.4.11を使用してlibstdC++と動的にリンクされた共有ライブラリをコンパイルしました。 stdC++ライブラリがバージョン3.4.10のみの人に自分のコードを送りたいと思います。彼にライブラリのバージョンをアップデートするように依頼するのではなく(これはソフトウェアの顧客であるため、システムファイルを変更することはできません)、適切なバージョンのlibstdC++を出荷したいと思います。 libフォルダに自分のコードのディレクトリの場所を指定します。適切な(後の)バージョンを使用するための自分のコードを取得するにはどうすればよいですか? /etc/ld.so.confに/ lib64というディレクトリがあります。このディレクトリには、古いバージョンのlibstdC++があります。 LD_LIBRARY_PATHを設定しても、これは上書きされません。これはadvertisedの動作から逸脱しているようです。なぜこれが起こっているのか?私はかなり単純な仕事をどのようにして完成させるのですか?libstdC++のライブラリ検索パス

ありがとうございました。

答えて

2

私はこの質問は古いことを理解していますが、似たような自分のリンクトラブルを解決しようとしていました。同僚のライブラリのバージョンと互換性のあるバージョンのlibstdC++に対してプログラムをビルドする必要があります。もっとも簡単な解決策は、ライブラリのバージョンとリンクすることです。ライブラリをリンクする際に特別な調整をする必要はありません。

これを行うには、バイナリ互換ライブラリをビルドできるGCCのバージョンをインストールして、実際に彼のバージョンのlibstdC++にリンクすることができます。 GLIBCXX_3.4.11はgcc-4.4以降であるため、gcc-4.3が必要です。これを使用してプログラムを構築すると、良い状態になっているはずです。また、あなたはすでに持っているのlibstdC++のバージョンを必要とし、それが利用できない場合は、インストールすることを拒否RPM/DEBを構築することができ http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

あなたは、ライブラリABIのcompatabilitiesのリストについては、以下のページを参照してくださいすることができます。これは、あなたのシステムに正しい依存関係が設定されていれば、彼はあなたのライブラリを使うことができると約束してくれます。その意味では、あなたがしていることやサポートしていないことであなたの図書館のための緩やかなSLAのようなものです。

希望に役立ちます!

+0

私は自分の答えがダムであることに気付き、同僚のコンピュータに配備する際にライブラリのバージョンを管理する必要がないように、単に「静的」フラグを使用する必要があります。 –

関連する問題