上記のいくつかの本当に良い答えがあります。さらに注意するのは、「それが実際にどのような違いをもたらすのか」です。メンテナンスのコストについてはすでに説明しました(たとえば、誰かがLib3を持たない新しいオペレーティングシステムをインストールする場合の問題。ユーザーはどこかでlib3を見つけてインストールする必要があります。また、lib3にはlib17も必要なので、あなたもそうではありません。インストールすると、ユーザーの作業が増えます)。
ただし、バイナリをロードするときに、実際に使用されていない共有ライブラリに対してリンクしている場合でも、システムはそれらのライブラリを探し、存在しない場合はロードを拒否します。これにより時間が追加され、悪夢がインストールされます。 。
コードがロードされると、追加の実行時ペナルティは発生しません。
そうは言っても、未使用のライブラリに対してリンクすることについての議論がある場合があります。コードにオプションUSE_FOOがあり、FOO機能がビルド時の任意の選択に基づいてのみ含まれているとします(たとえば、「これはLinuxカーネル> 3.0であるか」、「システムに豪華なグラフィックカードがありますか」)。FOOはLib1を使用します。ビジネスを行うために、USE_FOOが設定されていないときに実際には必要ない場合でも、ビルドシステム(makefileなど)を常にlib1に対してリンクするのを少し簡単にすることができます。
ただし、一般的に、不要なライブラリに対してリンクしないでください。それはより多くの依存関係を引き起こします、そしてそれは決して良いことではありません。