静的リンクせいてきリンク英語: static link)とは、コンピュータプログラム作成時において、ライブラリあるいはアプリケーションプログラムモジュールビルドする際に、各モジュールに必要なプログラムコードの実体すべてをリンケージエディタによってリンクしてモジュールに含める方式。

コンパイラによってソースコードから生成されたオブジェクトファイルを、リンク時につなぎ合わせ、実行可能形式のバイナリ実行ファイル)を作成する。

静的リンキングスタティックリンキングとも言う。

静的リンクの利点としては、モジュール自身に必要なコードが含まれているため自己完結できることや、シンボルの解決が事前に(静的に)実施されるためプログラム実行時のオーバーヘッドがないことなどが挙げられる。

静的リンクの欠点としては、各モジュールに重複するコードやデータがあったとしても、それぞれに実体が存在するためモジュールのサイズが大きくなってしまうことや、ライブラリの実装を変更したときに、たとえライブラリのインターフェイスに変更がなくてもプログラムを再リンクする必要があることなどが挙げられる[1]。静的リンクされるコードの量が増えると、ビルド時のリンク時間が増大し、開発サイクルが鈍化する原因となる。また、重複するコードやデータはメモリを圧迫し、キャッシュが頻繁にクリアされることで実行速度が低下する原因にもなる。

なお、静的リンクライブラリは通例処理系ごとに固有のアプリケーションバイナリインタフェース (ABI) に依存する形式となるため、ABI互換のない処理系間で共有・再利用することはできない。

対義語 編集

共有ライブラリあるいはダイナミックリンクライブラリ (DLL) にプログラムコードの実体を分割しておき、プログラムの実行開始時にローダによって初めて結合する方式を動的リンクと呼ぶ。

脚注 編集

関連項目 編集