Cオブジェクトファイルを静的ライブラリ(.aファイル)に保存すると、どのような利点がありますか?

Cオブジェクトファイルを静的ライブラリ(.aファイル)に保存すると、どのような利点がありますか?

私は、単一のモジュール/オブジェクトファイルに接続するのとは対照的です。モジュールグループが一緒に保持されるのはなぜですか?実行可能ファイルを1.大きくし、2.それほど安全にしませんか(つまり、リターン指向プログラミング攻撃に対してより脆弱です)。

答え1

静的ライブラリの主な機能は、欠落しているシンボルを提供するアーカイブメンバーのみをリンクできるシンボルのインデックス付けです。

ターゲットファイルを単一のファイルにグループ化または圧縮することは副次的な作業であるため、いわゆる「シンアーカイブ」を持つことができますが、どちらもありません。 (シンアーカイブは、デフォルトで参照するターゲットファイルの外部に存在する参照ファイルです。)

答え2

利点:ファイルは1つだけです。

静的ライブラリはアーカイブだけです。必要に応じて個々のファイルを挿入または減算することができます。プログラムをリンクすると、そのファイルだけが抽出されリンクされます。

注:-devでLinuxディストリビューションを使用している場合は、dpkg同じライブラリとパッケージアーカイブツールを使用します(そして-devパッケージ内に入れ子にすることもできます)。

関連情報