簡単な質問-g++
リンカーを特定のlibstdc++
ライブラリバージョンとリンクさせる方法はありますか?gcc
/のmanページにg++
も、ここにある他の質問にも、役立つものは何も見つかりませんでした。
これが状況です-私のアプリケーションは、で構築された特定の共有ライブラリをlibstdc++.so.5
使用しており、にインストールして使用したいと考えていRHEL5
ます。そのため、マシン上でアプリケーションをビルドしようとすると、RHEL5
次の警告が表示されます。
warning: libstdc++.so.5, needed by ..the_shared_library_.. may conflict with libstdc++.so.6
compat-libstdc++
rpmをインストールしても効果はありませんでした。機能がないstd::string
ため、のデストラクタでプログラムがクラッシュします。だから、このRHEL5
マシンで私はこれを持っています:
[root@xxx]# ll /usr/lib/libstd*
-rwxr-xr-x 1 root root 259532 Aug 21 2006 /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx 1 root root 31 Jul 28 19:35 /usr/lib/libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx 1 root root 18 Aug 24 15:08 /usr/lib/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x 1 root root 733456 Aug 21 2006 /usr/lib/libstdc++.so.5.0.7
そして私が作るとき
[root@xxxx]# ldd my_exe
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00333000)
...
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00ddf000)
私はそれが未定義の振る舞いであることを知っているので、これは悪いことです:/
それで、のみを使用して実行可能ファイルをビルドする方法はありますlibstdc++.so.5
か?libstdc++.so.6
(多くの理由により、削除はオプションではありません。静的リンクもオプションではありません)。
どうもありがとう!