ライブラリとは
・汎用性の高い関数やデータ構造郡を
可能にしたファイル
・コンパイル済みの
として提供される。
・ただし、それ単体でプログラムとして動作させることができない。
→ライブラリ自身は実行可能ファイルではない。
・いわば、他のプログラムに何らかの機能を提供する
(コード郡)
C言語の例
・printf()やscanf()などの関数群をまとめた、
・ライブラリの種類別に用意された
を
して利用
(stdio.h, math.h, string.h, stdlib.h ... etc)
ライブラリの形式は主に2つ
スタティックリンク・ライブラリ(静的結合ライブラリ)
・ライブラリファイルとオブジェクトファイルは静的に結合
→ライブラリは実行可能ファイルに
ダイナミックリンク・ライブラリ(動的結合ライブラリ)
・ライブラリの
をオブジェクトファイルに結合
→実行可能ファイルにはライブラリのリンクコードが埋め込まれる
・ライブラリ自身は
に動的にリンクされる
スタティックリンク・ライブラリの特徴
ライブラリの修正、改良における実行可能バイナリへの影響
・修正の恩恵を受けるためには、ソースファイルの
が必要
(修正したライブラリに不具合があっても、
しない限り影響しない)
同一プラットフォームにおける実行可能バイナリの動作
・実行可能バイナリの動作は、他のマシン上でも
実行可能バイナリのファイルサイズ
・ライブラリ自身のコードが組み込まれるので、サイズは
なる
ダイナミックリンク・ライブラリの特徴
ライブラリの修正、改良における実行可能バイナリへの影響
・ライブラリの修正の恩恵を受けるために、特別な事をする必要は
・ライブラリの不具合は、全ての実行可能バイナリに
同一プラットフォームにおける実行可能バイナリの動作
・実行可能バイナリの動作は、他のマシン上では
(ライブラリのバージョンが違う、必要とされるライブラリが存在しないなど)
・複数のバージョンのライブラリが
していると、動作が特定できない
実行可能バイナリのファイルサイズ
・ライブラリのコードは含まれないので、サイズは
ヘッダファイル :xxx.h
(データ構造と操作関数の関数プロトタイプ宣言を記述)
ライブラリのソースファイル :xxx.c
(操作関数の定義)
ライブラリのバイナリファイル
スタティックリンク・ライブラリ :libxxx.a
ダイナミックリンク・ライブラリ :libxxx.so
スタティックリンク・ライブラリの作り方
(ライブラリ名:xxx, メインプログラム名:xxx-main)
①xxx.cから
を作る
$
→
が生成される
②
から
を作る
$
ダイナミックリンク・ライブラリの作り方
xxx.cから
を作る
$
実行ファイルの作り方
$
※「.」は、ライブラリのパス
[プロ技]ユーザーライブラリの利用
コンパイル方法は覚えておこう!
ログインすると、チェック機能を利用できるようになります。