2011-08-11 15 views
1

どうすればこの問題を回避できますか?私は非常にシンプルなC++プログラムをubuntuボックスでコンパイルしています。別のマシンでバイナリを使用すると共有オブジェクトエラーが発生する

商用ソフトウェアは、この問題を回避どのよう
cannot find shared object stdlibc++5.so 

、ユーザーのマシンにインストールSTDLIBが多くを変えるために起こっている:私は赤い帽子にそれを上に移動し、それを実行しようとすると私のようなエラー何かを得ます。コンパイル時に使用する必要があるフラグがありますか?

+0

市販のソフトウェアは、サポートされているディストリビューションにあるCおよびC++ライブラリの一般的なバージョンとリンクされた複数のバイナリを提供する必要があります。あなたは静的にリンクすることもできますが、それはかなり控えめです。 –

答えて

2

私はあなたが再びそれを再コンパイルする必要があると思うので:

  1. OSは、ライブラリの位置が異なる場合があります[UbuntuとRed Hatの]
  2. 異なっています。また、stdC++ライブラリがまったく存在しない可能性があります(ただし、非常に 分です)。 C/C++のようなコンパイル言語を採用した商用ソフトウェアで
  3. 、アプリケーションは同じOS(私の知る限りでは、開発とproduction..as両方)に を展開されており、通常、 ライブラリの場所も一致している

C++コード(hello worldかもしれません)をコンパイルしてコードをもう一度コンパイルできるかどうか確認してください。

1

これにはいくつかの理由が考えられます。あなたが知っている限り、 ターゲットマシンはg ++とそのライブラリをインストールしていないかもしれません。 実際の解決策は、 -static-libstdc++オプションを使用して、標準のC++ライブラリを静的にリンクすることです。

関連する問題