2

コードは c/c++ で書かれており、コンパイル ホストの一部のライブラリに依存する場合があります。また、ライブラリに依存する問題なしに別のホストで実行する必要があります。どちらのホストも Linux で、バージョンが異なる場合があります。あなたは良い戦略を持っていますか?

4

4 に答える 4

3

Linux での純粋な静的リンクはお勧めしません。C++ ではオプションではない代替 libc (dietlibc など) を使用する場合にのみ可能です。サポートする必要がある最も古いバージョンの Linux でアプリケーションをビルドすることをお勧めします。新しい libc ビルドには下位互換性があるためです。

これは libc のみをカバーし、gtk、pangom などの他の要件はバイナリに直接コンパイルする必要があります。

于 2012-10-09T12:13:04.723 に答える
2

アプリケーションを静的にリンクして、動的に読み込まれるライブラリにできるだけ依存しないようにします。これは、この問題の一般的な解決策です。

その他のソリューションは次のとおりです。

  • 必要なライブラリをアプリケーションと共に出荷し、システムのLD_LIBRARY_PATH変数をオーバーライドして、含まれているバージョンを優先バージョンにします。
  • とフレンドを使用してライブラリを動的にロードするコードを記述しdlopen()、ライブラリのバージョンの違いを手動で処理します。
于 2012-10-09T09:50:33.577 に答える
0

ほとんどのプラットフォームには、Cコードをカバーする明確に定義されたABIがありますが、C++機能をカバーするABIはまだ一般的ではありません。

libcだけを使用してC++で記述されたプログラムは、別のプラットフォームでは実行できない場合があります。バイナリ互換性が重要な問題である場合は、cの使用を検討してください。

于 2012-10-09T11:13:59.433 に答える
0

この質問に対するすべての回答を考慮して (静的リンク、最も古い Linux でのコンパイルなど)、Linux アプリ チェッカーで最終的なバイナリをチェックして、他の Linux ディストリビューションとの互換性の問題を示します。

ここに画像の説明を入力

于 2012-10-10T07:06:57.070 に答える