Boostライブラリ、log4cxx、またはgoogleロギングライブラリの一部を含む一連のライブラリに依存する新しいC ++プロジェクトを開始します。プロジェクトが進化するにつれて、他のライブラリも進化します(まだ予測できません)。 。
32ビットシステムと64ビットシステムの両方で実行する必要があります。おそらく、必要なすべてのライブラリやsu特権が利用できるとは思わない、非常に多様なLinux環境で実行する必要があります。
私の質問は、これらすべてのライブラリに動的または静的にリンクしてアプリケーションを構築する必要があるかどうかです。
ノート:
(1)静的リンクは開発中に苦痛になる可能性があることを認識しています(コンパイル時間の延長、32ビットと64ビットの両方のクロスコンパイル、依存関係チェーンを下げてすべてのライブラリを含めるなど)が、テスト中ははるかに簡単です-ファイルを移動して実行するだけです。
(2)一方、動的リンクは開発段階で簡単になります-コンパイル時間が短く(32ビット開発環境から64ビットライブラリへの動的リンクを処理する方法がよくわかりません)、依存関係の連鎖に煩わされることはありません。一方、新しいバージョンの展開は醜い場合があります。特に、新しいライブラリが必要な場合(対象のマシンにsu権限がない、またはこれらのライブラリが利用できないという上記の条件を参照)。
(3)このトピックに関連する質問を読みましたが、どのアプローチが私のシナリオに最も適しているかを実際に理解できませんでした。
結論:
- ご意見ありがとうございました!
- 私はおそらく静的リンクを使用します。理由は次のとおりです。
- より簡単な展開
- パフォーマンス中の予測可能なパフォーマンスとより一貫した結果。テスト(このペーパーを参照してください:http://www.inf.usi.ch/faculty/hauswirth/publications/CU-CS-1042-08.pdf)
- 指摘したように、静的と動的のコンパイルのサイズと期間はそれほど大きな違いではないようです
- より簡単でより速いテストサイクル
- 私はすべての開発者を維持することができます。私の開発者のサイクル。マシーン