動的リンクとは? わかりやすく解説

動的リンク

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/04 08:49 UTC 版)

動的リンクどうてきりんく英語: dynamic link)とは二つの意味がある。

  1. コンピュータプログラムにおいて、実行時にプログラムの結合を行う方式。
  2. ハイパーテキストにおいて、ノード間のリンクを参照時に決定する方式。

プログラムにおける動的リンク

動的リンキングダイナミックリンキングとも言う。

コンピュータプログラム作成時において、大規模なプログラムは一般的に複数のモジュールに分割される。ライブラリあるいはアプリケーションプログラムモジュールビルドする際に、まずコンパイラによってソースコードからオブジェクトファイルが生成されるが、各モジュールに必要なプログラムコードの実体すべてをリンケージエディタによってリンクしてモジュールに含め、実行可能形式のバイナリ(実行ファイル)を得る方式を静的リンクと呼ぶ。

これに対し、各モジュールに必要なプログラムコードの実体すべてを含めず、プログラムの実行開始時にローダによって初めて他のモジュールと結合する方式を動的リンクと呼ぶ。この動的リンク機構を使ったライブラリを、動的リンクライブラリ(ダイナミックリンクライブラリ)と呼ぶ。Microsoft Windows環境ではDLLと略されることが多い。よく使われる処理(アルゴリズム)を記述したサブルーチンを再利用するケースなど、動的リンクライブラリを複数のプログラムから共有することには利点があるので、しばしば「共有ライブラリ」として運用される。

動的リンクの利点としては、重複するコードやデータが減ることでモジュールのサイズを小さくできることや、ライブラリの実装を変更したときに、ライブラリのインターフェイスに変更がなければプログラムを再リンクする必要がないことが挙げられる[1]。動的リンクであっても一般的にはアプリケーション起動時にローダによって自動的にシンボルの解決を実行する早期束縛(アーリーバインディング)となり、必要なモジュールがシステム上に存在しなかったり、モジュール内にシンボルが見つからなかったりした場合はプロセスの起動に失敗する。しかし、最低限必要なコードのみを本体に含め、それ以外のコードは別のモジュールに分離し、ユーザーが特定の機能を使おうとしたタイミングで必要に応じてモジュールを動的ロードし、シンボルの解決を実行するといった遅延束縛(レイトバインディング)をサポートする環境もある。

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

共有ライブラリ

動的リンクされるライブラリは、単独のアプリケーションから利用される「プライベートライブラリ」だけでなく、複数のアプリケーションから利用される「共有ライブラリ」にすることもできる。ただし共有ライブラリの場合、暗黙的に特定のバージョンの共有ライブラリの内部処理や仕様に依存していたプログラムがライブラリのバージョンアップによって動作しなくなること、バージョンアップした共有ライブラリにバグが存在するとそのライブラリを利用するソフトウェアすべてに影響が及ぶこと(特にライブラリがシステム全体で共有される場合に深刻となる)、バージョンアップによる影響範囲を事前に特定できないこと[要説明]、同じ共有ライブラリの複数のバージョンがシステム内に存在するときに探索優先度の違いで動作が変わってしまうこと、などがある。これらの欠点は俗にコンピュータ業界で「DLL地獄(DLL Hell)」の名称で呼ばれることがある。

プラグイン

動的ロード・動的リンクと動的束縛(ダイナミックバインディング)の仕組みを応用し、サードパーティの開発者あるいはエンドユーザーによるアプリケーションの機能拡張を可能とするのがプラグイン機構である。名前、戻り値や引数、呼び出し規約など、プラグインのインターフェイス仕様に従って実装され、モジュール外部に公開(エクスポート)されたサブルーチンでありさえすれば何でもアプリケーションから探索してコールバック関数として呼び出すことができるというダックタイピングによるポリモーフィズムを実現する。動的ロードをサポートするための下位レベルのAPIとして、Windowsでは主にLoadLibrary()GetProcAddress()[2]が、POSIX環境ではdlopen()dlsym()[3]が用意されている。

ハイパーテキストにおける動的リンク

ハイパーテキストにおいて、ハイパーテキストを記述したときにノード間のリンクをあらかじめ定義する方式に対して、参照時に動的にリンクを決定する方式を言う。

脚注

関連項目


動的リンク

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/12 21:29 UTC 版)

リンケージエディタ」の記事における「動的リンク」の解説

動的リンクは、リンク時ライブラリ参照を名前のみで解決してプログラム作る方法出来上がったプログラムにはライブラリ部分プログラム含まれないのが特徴である。そのプログラム実行時にライブラリ空間上の実際プログラム結合し実行する(この作業通常ローダ呼ばれるプログラムが行う)。出来上がったプログラム大きさ小さくなるプログラム再度リンクしなくてもライブラリだけ入れ替えることができるなどの利点があり、現在広く使われている。 C言語標準ランタイムライブラリのような汎用ライブラリは動的リンクするものの、ユーザー定義のライブラリ静的リンクする、あるいは汎用ライブラリ静的リンクするものの、ユーザー定義のライブラリは動的リンクする、両方動的リンクする、両方静的リンクする、といった組み合わせがあり、用途によって使い分けることもある。

※この「動的リンク」の解説は、「リンケージエディタ」の解説の一部です。
「動的リンク」を含む「リンケージエディタ」の記事については、「リンケージエディタ」の概要を参照ください。

ウィキペディア小見出し辞書の「動的リンク」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

','','','','','','','','','','','','','','','','','',''];function getDictCodeItems(a){return dictCodeList[a]};

すべての辞書の索引

「動的リンク」の関連用語



3
ディー‐エル‐エル デジタル大辞泉
38% |||||

4
36% |||||







動的リンクのお隣キーワード
検索ランキング
';function getSideRankTable(){return sideRankTable};

   

英語⇒日本語
日本語⇒英語
   



動的リンクのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの動的リンク (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのリンケージエディタ (改訂履歴)、ライブラリ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS