◆ ライブラリとは
ライブラリとは、よく使用されるプログラムの共通部分を抜き出して、他のプログラムから利用できる
ようにしたものです。ライブラリには、静的ライブラリと共有ライブラリの2種類があります。
ライブラリ |
説明 |
静的ライブラリ |
プログラムの作成時にその実行ファイル内に組み込まれたライブラリ
・ メリット - 1つのプログラムだけで動作させられ、別環境で動作可
・ デメリット - プログラムのサイズが大きくなる |
共有ライブラリ |
プログラムの実行時にロードされて、複数のプログラム間で共有されるライブラリ
・ メリット - プログラム全体のサイズが小さくなる
・ デメリット - プログラム実行時に適切に配置されたライブラリが必要 |
◆ スタティックリンクとダイナミックリンク
プログラムからライブラリの機能を呼び出すことをリンクと呼び、リンクには以下の2種類があります。
ライブラリ |
説明 |
スタティックリンク |
プログラムの作成時に、あらかじめライブラリの機能をプログラム本体に組み込む方法。
この時に組み込まれるライブラリは、静的ライブラリ。
|
ダイナミックリンク |
プログラムの実行時に、ライブラリの機能を呼びだす方法。
この時に呼び出されるライブラリは、共有ライブラリ。 |
◆ 必要となる共有ライブラリの確認
共有ライブラリは、/lib または /usr/lib に配置されており、libtinfo.so.5 のように「 lib〜.so〜 」という
名前が付けられます。実行ファイルが必要とする共有ライブラリは、lddコマンドで確認できます。例えば
moreコマンド(/bin/more)が必要な共有ライブラリは、以下のように ldd /bin/more で確認できます。
出力結果から、moreコマンドには4つの共有ライブラリがダイナミックリンクされていることが分かります。
◆ 必要となる共有ライブラリの検索
/lib や /usr/lib ディレクトリ以外の場所に共有ライブラリを配置する場合、その共有ライブラリの
検索パスを設定する必要があります。検索パスを設定する方法は以下の2種類があります。
1. /etc/ld.so.confファイルに設定
◆ 実行例 : ld.so.conf ファイルに /usr/test/lib ディレクトリを検索パスとして設定
# vi /etc/ld.so.conf
/usr/test/lib
|
◆ 実行例 : ldconfig の実行により、/etc/ld.so.cache を更新
2. 環境変数のLD_LIBRARY_PATH への設定
◆ 実行例 : 環境変数の LD_LIBRARY_PATH に /usr/test/lib ディレクトリを検索パスとして設定
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/test/lib |
|