ビルド時に実行ファイルへ組み込まれる形式のライブラリ。
静的ライブラリとは、ビルド(リンク)時に実行ファイル本体へ組み込まれるライブラリのことです(拡張子は .lib や .a)。ライブラリ=よく使う機能をまとめた部品集のことで、それを自分のプログラムに取り込んで使います。
身近な例で考えると、料理本のレシピを自分のノートに丸ごと書き写しておくのに似ています。一度書き写してしまえば、料理本(ライブラリファイル)が手元になくても、自分のノート(実行ファイル)だけで料理を作れます。
上のツールで▶ボタンを押すと、ソースと静的ライブラリをリンカが結合し、ライブラリのコードを含んだ1つの実行ファイルができあがる流れを確認できます。
ビルドの流れの中で、組み込みを担当するのがリンカ(=部品を1つにまとめる結合担当)です。リンカは静的ライブラリから、プログラムが実際に使う部分のコードだけを取り出し、実行ファイルの中へコピーして1つにまとめます。
ビルドは大きく次の流れで進みます。
・① コンパイル:コンパイラがソースを機械語に翻訳する(ライブラリ呼び出しは予約だけ残る)
・② リンク:リンカがライブラリの必要部分を実行ファイルにコピー(組み込み)
・③ 完成:ライブラリのコードを含んだ完結した1つの実行ファイルになる
ポイントは、組み込みが起きるのがビルド(リンク)時だという点です。一度組み込んでしまえば、実行ファイルの中にライブラリのコードが入っているので、実行のときに外部のライブラリファイルを探しに行く必要がありません。
静的ライブラリには、はっきりした利点と欠点があります。すべてを自分の中に取り込むという性質が、そのまま良い面と悪い面の両方を生みます。
これらの欠点を解消するのが、実行時にライブラリを読み込む動的ライブラリ(DLL)です。動的ライブラリは実行ファイルが小さく、更新が楽で、複数のプログラムが同じライブラリをメモリ上で共有できます。
| 項目 | 静的ライブラリ | 動的ライブラリ |
|---|---|---|
| 組み込み時期 | ビルド(リンク)時 | 実行時 |
| 実行ファイル | 大きい(自己完結) | 小さい(本体のみ) |
| 更新 | 再ビルドが必要 | 差し替えで完了 |