スタティックリンク (スタティックリンク) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

スタティックリンク (スタティックリンク) の読み方

日本語表記

静的リンク (セイテキリンク)

英語表記

static linking (スタティックリンキング)

スタティックリンク (スタティックリンク) の意味や用語解説

スタティックリンクとは、プログラムが動作するために必要な外部のライブラリコードを、そのプログラム自身の実行可能ファイルに完全に組み込んでしまう結合方式である。これにより、作成された実行可能ファイルは、実行時に外部のライブラリファイルを必要とせず、単独で動作できる自己完結型のプログラムとなる。 ソフトウェア開発において、プログラマはしばしば既存の機能を提供するライブラリを利用する。例えば、画面への描画機能、ファイル操作機能、複雑な数学的計算機能などは、オペレーティングシステムや開発環境が提供するライブラリとして用意されていることが一般的である。ソースコードをコンパイルして機械語のオブジェクトコードに変換した後、これらのオブジェクトコードと利用するライブラリのオブジェクトコードを一つにまとめる作業が必要となる。この結合処理を「リンク」と呼ぶ。 スタティックリンクでは、このリンク処理がプログラムのビルド時、すなわち実行可能ファイルが生成される際に行われる。リンカと呼ばれるツールが、プログラムが参照しているライブラリ関数やデータの実体であるオブジェクトコードを、プログラム本体のオブジェクトコードに直接コピーし、最終的に一つの大きな実行可能ファイルを生成する。この実行可能ファイルは、必要なライブラリコードの全てを内包しているため、プログラムを実行する際には外部の特定のライブラリファイルがシステムにインストールされているかどうかを気にする必要がない。 この方式の最大の利点は、プログラムの「自己完結性」と「可搬性」が高い点にある。実行可能ファイルさえあれば、それがビルドされた環境や、ターゲットとなるシステムに特定のライブラリがインストールされているかどうかにかかわらず、通常はそのまま動作する。これにより、プログラムの配布が非常に容易になり、異なる環境での動作不良のリスクを低減できる。また、プログラムが必要とするライブラリの特定のバージョンが実行ファイル内に固定されるため、システムにインストールされている他のプログラムが使用するライブラリのバージョンに影響されることなく、安定して動作することが保証される。実行時に外部ライブラリをロードする手間が不要なため、起動速度や実行性能がわずかに向上する可能性もある。 一方で、スタティックリンクにはいくつかの欠点も存在する。第一に、実行可能ファイルのサイズが大きくなる傾向がある。複数のプログラムが同じライブラリを使用している場合でも、スタティックリンクされた各プログラムはそれぞれがライブラリのコピーを持つため、ディスクスペースを無駄に消費する。さらに、これらのプログラムが同時に実行される場合、メモリ上でも同じライブラリのコードが重複してロードされる可能性があり、システムリソースの効率が悪くなる。第二に、ライブラリにセキュリティ上の脆弱性が見つかった場合や、バグが修正された場合、スタティックリンクされた全てのプログラムを再コンパイルし、再配布する必要がある。これは、多くのプログラムが共通のライブラリを使用している場合に、非常に手間のかかる更新作業となる。 スタティックリンクは、実行環境が不確定な組込みシステム向けプログラムや、特定の環境に限定して配布される単一のツールなど、自己完結性と配布の容易さが重視される場合に特に有用である。また、システムに特定のライブラリをインストールすることが困難な環境や、ライブラリのバージョン衝突を絶対に避けたい場合に選択されることがある。

スタティックリンク (スタティックリンク) とは | 意味や読み方など丁寧でわかりやすい用語解説