I-8-9. ライブラリの種類とライブラリの利用方法

ライブラリにはstaticライブラリとsharedライブラリの2種類があることを説明し、それぞれの利点と特徴、利用方法について解説する。また、ライブラリを利用したシステムプログラミングの例を示す。ライブラリで提供される関数とシステムコールの違いについての説明も行う。

【学習の要点】

* 静的ライブラリとは、プログラム(実行形式)の構築時に組み込まれるライブラリである。

* 共有ライブラリとは、プログラム実行と同時にメモリ上に展開されるライブラリである。

* 動的ライブラリとは、プログラム実行中の任意の時点で読み込まれるライブラリである。

図I-8-9. ライブラリの種類

【解説】

1) ライブラリの種類

ライブラリとは、実行させることが可能な複数個のプログラムに対して、そのプログラムにとっても共通であると判断できる部分のプログラムを集めたファイルである。ライブラリには、静的ライブラリと共有ライブラリがある。共有ライブラリには、動的ライブラリも含まれている。

* 静的ライブラリ(static library)

プログラム(実行形式)の構築時に組み込まれるライブラリ。

- ライブラリ部分は再コンパイルの必要がない。

- ライブラリとして提供するプログラムの、ソースコードを参照させたくない場合に役立つ。

* 共有ライブラリ(shared library)

プログラム実行と同時にメモリ上に展開されるライブラリ。

- 共有ライブラリのインストール後に実行開始されるプログラムは、必ずこのライブラリを利用することになる。

- すでに実行中のプログラムも、再起動しなければ古いライブラリを使い続けることが可能。

* 動的ライブラリ(dynamically loaded library)

プログラム実行中の任意の時点で読み込まれるライブラリ。

- 必要と判断されるまで、読み込まれない。

- プラグインやモジュールの実装に役立つ。

- 動的ライブラリの作成は、共有ライブラリと同様の方法で作成する。

2) ライブラリの利用方法

個々のライブラリを使用する際には、ライブラリ毎に異なる特徴を持っているので注意する。

* 静的ライブラリ

実行可能プログラムを作成するタイミングで、静的ライブラリを取り込む。コンパイルの際にgccコンパイラを使用しているのであれば、ライブラリの指定に-lオプションを指定する。

* 共有ライブラリ

/usr/libなどのディレクトリにファイルを配置して、ldconfigコマンドを実行する。実行可能プログラムをコンパイルする際に、-Lオプションで共有ライブラリを指定する。

* 動的ライブラリ

ライブラリをオープンし、シンボルを検索し、エラーを処理し、ライブラリを閉じる、という関数が存在する。それらを呼び出すことによって動的ライブラリを利用することができる。

3) ライブラリとシステムコール

* ライブラリ

基本的にOSには依存せず、かつ複数のアプリケーションプログラムの中で共通と判断される処理を提供する。内部的にシステムコールを呼び出しているものも存在する。

* システムコール

OS依存の関数である。また必要最低限なものしか用意されていない。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン