スタティックリンクとダイナミックリンクの違い
組み込むか、実行時につなぐか
- スタティックリンクとダイナミックリンクは、アプリケーションにライブラリ(共通の処理をまとめたもの)を結び付ける方法の違いです。
- スタティックリンクは、コンパイル時に固定的にリンクして実行ファイルを作る方法です。ダイナミックリンクは、プログラムの実行時に、必要になったライブラリをメインメモリ上で動的にリンクする方法です。
- 同じライブラリを使うアプリを同時に動かすと、スタティックリンクはライブラリが重複してメモリを余計に使い、ダイナミックリンクは共有できます。
スタティックリンクとは
スタティックリンク(静的リンク)は、コンパイル時に、ライブラリをプログラムへ固定的にリンクして実行ファイルを作る方法です。必要なライブラリが最初から実行ファイルに組み込まれているので、実行時の呼び出しが速いのが特長です。
その代わり、ライブラリが実行ファイルごとに組み込まれます。同じライブラリを使う複数のアプリを同時に動かすと、ライブラリの分が重複して、メモリを余計に消費します。
ダイナミックリンクとは
ダイナミックリンク(動的リンク)は、プログラム本体が必要としたときに、はじめてメインメモリ上でライブラリを動的にリンクする方法です。ライブラリはプログラムの外にあるものを参照するので、実行ファイルのサイズは大きくなりません。
メモリ上のライブラリを、複数のプログラムで共有できます。そのため、同じライブラリを使うアプリが同時に動いても、メモリを余計に消費しにくくなります。
違いを表で比べる
| 比べること | スタティックリンク | ダイナミックリンク |
|---|---|---|
| リンクの時期 | コンパイル時(ビルド時)に固定的にリンク | 実行時に、必要になったときにメインメモリ上でリンク |
| ライブラリの置き場所 | 実行ファイルごとに組み込まれる | プログラムの外にあり、参照する |
| 実行時の呼び出し | 速い | リンクの手順が実行時に入る |
| 複数アプリで同じライブラリを使うとき | 重複し、メモリを余計に消費する | メモリ上のライブラリを共有できる |
| 実行ファイルの大きさ | ライブラリを含むため大きくなる | 外部を参照するので大きくならない |
試験での問われ方
モバイルシステム技術検定2級では、第8章「モバイル端末のソフトウェア技術」で出ます。もちこ道場の第8章の問題では、次のような問われ方をしています。
- 穴埋め: 「ライブラリを結び付ける方法のうち、必要になったときに、はじめてメインメモリ上で動的にリンクする方式」の空欄にダイナミックリンクを選ぶ。選択肢にはスタティックリンクが並びます。
- 組み合わせ: 「コンパイル時に固定的にリンクして実行ファイルを作る方法」と「実行時に動的にリンクする方法」に、スタティックリンクとダイナミックリンクを正しい順で入れる。
- 記述を選ぶ: 「スタティックリンクは実行時に動的にリンクする」「ダイナミックリンクは複数のプログラムが動くとメモリを余計に消費する」「ダイナミックリンクは実行ファイルごとにライブラリが組み込まれる」のように、時期や性質を入れ替えた記述を見抜く。「スタティックリンクは実行時の呼び出しが速い」は正しいものとして出ます。
覚え方
- スタティック(静的)は、作るときに固定して組み込む。ダイナミック(動的)は、動かすときにつなぐ。「いつリンクするか」が出たら、コンパイル時はスタティック、実行時はダイナミックです。
- 「重複」「実行ファイルごとに組み込まれる」と出たらスタティック、「共有」「外部を参照」と出たらダイナミックと結び付けます。
第8章のほかの用語は「第8章 モバイル端末のソフトウェア技術の要点」にまとめています。
第8章の問題を2問、解いてみる
もちこ道場の第8章の問題です。演習画面と同じ解説(図解・選択肢ごとの解説)を付けています。
問1
ライブラリをプログラムに結びつける方法のうち、プログラム本体が必要とするときに初めてメインメモリ上で動的にリンクを実行する方式を1と呼ぶ。
答えと解説を見る
正解は 2(ダイナミックリンク)です。
【概要】
プログラムで共通処理をまとめたライブラリを結びつけるリンク方式に関する問題である。固定的に結合する方式と動的に結合する方式がある。
【図解】実験的機能
図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。
【各選択肢の解説】
- 1. スタティックリンクあなたの解答 スタティックリンクはコンパイル時にライブラリとプログラムを固定的に結合する方式のため空欄(1)に合わない。
- 2. ダイナミックリンク正解あなたの解答 ダイナミックリンクはプログラムが必要とするときにメインメモリ上で動的に結合する方式であり空欄(1)に合致する。
- 3. ネイティブリンクあなたの解答 ネイティブリンクはリンク方式として存在しない用語であり、動的な結合を行う空欄(1)に不適である。
- 4. 仮想化あなたの解答 仮想化は中間層を介してプロセッサやOSの違いを吸収する技術であり、ライブラリの結合方式を示す空欄(1)に不適である。
問2
コンピュータのソフトウェア構成において、OSに直接含まれておらず、複数のアプリケーションに共通する機能をひとまとめにし、OSの機能を拡張するために作られたソフトウェアを1と呼ぶ。
答えと解説を見る
正解は 4(ミドルウェア)です。
【概要】
OS機能の拡張と共通機能の提供を行うソフトウェアに関する問題である。OSとアプリの間に位置する。
【図解】実験的機能
図解は実験的機能です。内容を簡略化しているため、公式テキストの記載と異なることがあります。
【各選択肢の解説】
- 1. カーネルあなたの解答 カーネルはOSの中核としてハードウェアを制御する層であり、OS機能を拡張する空欄(1)に合致しない。
- 2. シェルあなたの解答 シェルはユーザからカーネル機能を呼び出す機能であり、共通機能を束ねる空欄(1)に合致しない。
- 3. デバイスドライバあなたの解答 デバイスドライバは周辺機器を直接制御するソフトであり、共通機能を束ねる空欄(1)に合致しない。
- 4. ミドルウェア正解あなたの解答 ミドルウェアはアプリ共通の機能をまとめOS機能を拡張するため空欄(1)の記述に合致する。
第8章は約140問。いま解いた問題と同じ形で、選択肢ごとの解説と図解が付いています。まずは登録なしで、第1章の142問から解き方を試せます(第2章からはプランで解けます)。
よくある質問
ライブラリ・ミドルウェア・API は、どう違いますか?
ライブラリは、アプリケーションが共通に使う処理をあらかじめ部品にまとめたものです。ミドルウェアは、そうした共通機能をまとめた、OS とアプリケーションの間の階層です。API は、その機能を呼び出して使うための規約です。
ミドルウェアは、OS の一部ですか?
一部ではありません。ミドルウェアは、OS とアプリケーションの中間に位置するソフトウェアで、複数のアプリケーションが共通に使う機能をまとめています。「OS のカーネル機能に直接組み込まれている」という記述は、試験では誤りとして出ます。
どちらの方式が優れていますか?
優劣ではなく、向き不向きです。スタティックリンクは実行時の呼び出しが速い代わりに、ライブラリが実行ファイルごとに入ります。ダイナミックリンクは、ライブラリをメモリ上で共有できる代わりに、実行時にリンクする手順が入ります。
もちこ道場
章ごとの問題と本番形式の模擬試験で、合格の力を確かめる
公式テキストの全13章から作ったオリジナルの予想問題を、スマホ・PC で解ける Web 演習サービスです(運営者が作っています)。
500円
31日間・買い切り・自動更新なし
- 全13章 1,804問○
- 選択肢ごとの解説○
- 全問の解説に図解○
- 模擬試験(100問・100分)なし
1,000円
31日間・買い切り・自動更新なし
- 全13章 1,804問○
- 選択肢ごとの解説○
- 全問の解説に図解○
- 模擬試験(100問・100分)○
無料体験は登録不要です。
次に読む
記事の確認問題と同じく、選択肢ごとの解説と図解が付いた問題を、スマホ・PC で続けて解けます。
モバイルシステム技術検定2級の第8章「モバイル端末のソフトウェア技術」で問われる用語を、6つのまとまりと取り違えやすい組み合わせで整理しました。第8章の問題を2問、その場で解いて確かめられます。
モバイルシステム技術検定2級の勉強時間は、公式の目安がありません。合格した人の体験談と解説サイトの目安を集めた平均(約60時間)と、1日2時間で1か月の計画を週ごとにまとめました。
出題範囲は、2026年11月6日にMCPC の公式ページで確認しました。用語の説明は、もちこ道場の問題と解説をもとにまとめたものです。