LPIC学習メモ
[ldconfig]
既存ライブラリのアップデートや、新しいフォルダの下に新しいライブラリを配置してのアップデートを行う場合のコマンド。
プログラムソースのライブラリ化のメリット
ソースの中で同一の動作(機能)を実行する記述が複数回存在するとき。
重複しているその機能を単体の機能として出すことで、以下のメリットがあげられる。
・プログラムの中の同一部分を外に出すことで、ソース内の冗長を取り除くことができる。(可視化性がよくなる)
・単体のプログラムにしたことで、呼び出し側のテストの工数を削減できる。
・改修時にも一箇所を直すだけですみ、その機能を呼び出す全てのプログラムに手を入れないで済むことで、改修ミスを減らせる。
ライブラリの種類
・静的ライブラリ 実行ファイルの中に取り込まれる
・動的ライブラリ 実行時にライブラリがメモリに取り込まれて、使用される。
プロフグラム実行時には、共有ライブラリがどこにあるか読み込むリンク/ローダがキャッシュから位置を探索するが、ldconfigコマンドを利用すると、/etc/id.so.confファイルを参照して、適切なシンボリックファイルを作成して、キャッシュに記載してくれる。
このため、共有ライブラリを使用する際にスピードアップが期待できる。(ldconfigを使うメリット)
ただし、デフォルト以外の場所への追加やパスの移動があった場合は、変更を認識してシンボリックファイルが自動的に変更されるわけではないので、/etc/id.so.confファイルを更新してから、ldconfigを再度実行する必要がある。
ldconfigは、ファイル名とヘッダ部分からどのバージョンにリンクを更新するか判断するため、オプションによって制御を行うことが必要となる
オプション
-v
詳細表示モード。 現在のバージョン番号を表示。
各ディレクトリを確認し、リンクを生成する度に内容を表示
-p
現在のキャッシュに保存されているディレクトリのリストと、 ライブラリの候補を表示。
-n
コマンドラインで指定されたディレクトリのみを処理。
デフォルトで共通ライブラリが置かれるディレクトリ、/etc/ld.so.conf に指定があっても、無視される。
-N
キャッシュを再構成しない。リンクは更新。
-X
リンクを更新しない。 キャッシュのみ再構成。
-f conf
文字列conf を /etc/ld.so.conf の代わりに利用。
-C cache
文字列cache を /etc/ld.so.cache の代わりに利用。
-r root
文字列root をカレントディレクトリとして実行。
-l
それぞれのライブラリを手動でリンク。(慣れないうちはミスが発生しやすいので、慣れるまでは使わない方がよい)