12-LPIC「level1」

LPIC|level 1【ライブラリ】

目標

  • ライブラリついて理解する

ライブラリ

ライブラリとは、よく使われるコードをまとめた「部品」や「ツール集」のようなものです。この部品をプログラムに組み込むことで、プログラムはその機能を簡単に使うことができます。ライブラリには 静的ライブラリ と 動的ライブラリ の2種類があります。

1.静的ライブラリ (Static Library)

静的ライブラリ は、プログラムを作成する時に組み込まれるライブラリです。言い換えれば、「コンパイル時にプログラムに取り込む」ライブラリです。

例えば、あなたがゲームを作っているとします。そして、このゲームでは、画面にグラフィックを表示するため「グラフィックスライブラリ」を使う必要があったとします。

このとき、ゲームを作成するにあたって、このグラフィックスライブラリ(例えばlibgraphics.a)をコンパイル時に取り込む方法をとったとします。これによって、ゲームのプログラムでは実行可能なファイルの中にグラフィックスライブラリのコードが含まれるようになります。

メリット

  • 一度組み込んでしまうと、ライブラリがどこにあっても関係なく、プログラムが動作します。
  • ライブラリに変更があっても、プログラムを再ビルドしない限り影響を受けません。

デメリット

  • プログラムのサイズが大きくなります。なぜなら、ライブラリのコードもプログラムに組み込まれているからです。
  • ライブラリを更新したい場合、プログラムを再コンパイルしなければなりません。

2. 動的ライブラリ (Dynamic Library)

動的ライブラリ は、プログラムの実行時にリンクされるライブラリです。言い換えれば、「実行時に必要なライブラリをプログラムが自動で呼び出す」形です。

先ほどの例でお話しした、ゲーム作成で、「グラフィックスライブラリ」を静的に組み込む代わりに、実行時にライブラリを読み込む方法を選んだとします。この場合、例えば、libgraphics.soという共有ライブラリを、ゲームを実行する際に必要なタイミングで読み込むことになります。

メリット

  • プログラム自体は小さく保つことができます。ライブラリは実行時に必要に応じて読み込まれるので、プログラムのサイズに影響を与えません。
  • ライブラリが更新されても、プログラムはそのままで動作します。例えば、グラフィックスライブラリの新しいバージョンがリリースされた場合、ゲームを再コンパイルせずに、ライブラリだけを更新すれば済みます。

デメリット

  • 実行時にライブラリを探してリンクするので、ライブラリが見つからなかった場合にエラーが発生します。
  • ライブラリの保存場所や名前を変更すると、プログラムがそのライブラリを見つけられなくなり、動作しなくなることがあります。

3. 共有ライブラリ(Shared Library)

共有ライブラリ というのは、特に 動的ライブラリ の一部で、複数のプログラムが同じライブラリを「共有」して使うことができるライブラリです。

先ほどの例であげた、「グラフィックスライブラリ」が、ゲームの作成だけでなく、様々なプログラムで共通して利用されるとします。これらに個別にインストールする代わりに、共有ライブラリとしてシステムに一度インストールしておけば、どのプログラムでもそのライブラリを使い回すことができます。

例えば、libgraphics.soという共有ライブラリが /lib や /usr/lib といったディレクトリに格納されていれば、複数のプログラムがこのライブラリを使い回すことができます。この方法によって、ライブラリのメモリ使用量やディスクの使用量を節約できます。

今回は以上になります。

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST