1


1

私はいくつかのカスタムCコードを書きました、そしてそれはubuntuでうまく動きます、しかし、私がそれを私のサーバーにアップロードすると(それはcentos 5を使います)失敗し、libraryは時代遅れだと言います。 私はあちこちグーグルしました、そしてcentosは最新のライブラリを使用することができません。 stlがバイナリに含まれるようにstlに対してコンパイルするにはどうすればよいですか。centosが古いライブラリを使用しても問題ありません。

P.S ソースをサーバーにアップロードしてそこでコンパイルしたくはありません。

2 Answer


3


あなたのリンクステップで、あなたは単にgccに "-static"フラグを追加することができます。


1


  1. あなたはあなたのUbuntuボックスにあなたのサーバー上のライブラリのバージョンに合うコンパイラをインストールすることができます。

  2. リンクを調整して、centosのリンクではなくロードされるという条件で、libstdc .soをコンパイルしたシステムから取り出して、アプリケーションを出荷することができます。

  3. あなたはそれを静的にコンパイルすることができます。 これを行うには、コンパイラをgからgccに切り替えます。-lgcc_s -Wl、-Bstatic、-lstdc、-Wl、-Bdynamic

好きなものを選んでください。 アプローチ(2)と(3)は依存性の問題を引き起こす可能性があることに注意してください。あなたのプロジェクト(特に、静的にリンクされ、現在あなたのアプリケーションの一部であるstdcの実装)はセントス。 そのような機能がなければ、アプリケーションは起動しません。 それが起こり得る理由は、あなたがコンパイルしているubuntuシステムがより新しく、そして前方互換性がlinuxライブラリに保存されていないことです。