2009-09-02 5 views
1

私はいくつかのカスタムC++コードを書いていますが、ubuntuでうまく動作しますが、私のサーバ(centos 5を使用しています)にアップロードすると失敗し、ライブラリの期限が切れています。私はすべての周りのグーグルとcentosは最新のライブラリを使用することはできません。 stlに対してバイナリに含まれるようにコンパイルするにはどうすればいいのですか?また、centosが古いライブラリを使用しているかどうかは関係ありません。libC++に対して静的にコンパイル

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

答えて

1
  1. あなたは、サーバー上のライブラリのバージョンに合ったコンパイラ箱あなたのUbuntuにインストールすることがあり

  2. libstdC++でアプリケーションを出荷することができます。コンパイルしたシステムから取得したものです。ただし、centos 'の代わりに読み込まれるように調整する必要があります。

  3. 静的にコンパイルできます。これを行うには、あなたが好きな選択-Bdynamic、-Bstatic -lstdC++ -Wl、

    はgcc -Wl -lgcc_sにG ++から

をあなたのコンパイラを切り替える必要があります。あなたのプロジェクト(特に、静的にリンクされているstdC++実装があなたのアプリケーションの一部になっている)は、システムライブラリにいくつかの関数を記述する必要があるかもしれません。 centos。そのような機能がない場合、アプリケーションは起動しません。それが起こる理由は、あなたがコンパイルしているubuntuシステムが新しいものであり、Linuxライブラリでフォワード互換性が保たれていないからです。

関連する問題