共有ライブラリは、"lib****.so", "lib****.so.バージョン番号"という名前のファイル。
"lib****.so.バージョン番号"がライブラリ本体であり、"lib****.so"はライブラリ本体へのリンク。
gccのオプションで-l****とすると、"lib****.so"からリンクを辿って、"lib****.so.バージョン番号"が読み込まれる。
このような構造にすることで、バージョンの違いを吸収できる。

共有ライブラリのパスは、/lib, /usr/lib, $LD_LIBRARY_PATH, /etc/ld.so.confに書いたディレクトリである。
ただし、OSは/etc/ld.so.confを直接参照せずに、/etc/ld.so.cacheを参照するので、
/etc/ld.so.confの中身を変更した場合は、ldconfigコマンドでその中身を/etc/ld.so.cacheに反映させる。

pkg-configを利用することでヘッダやライブラリの指定を簡略化することができる。
例えば、OpenCVの場合、"pkg-config --cflags opencv"で"-I /opt/local/include/opencv"、
"pkg-config --libs opencv"で"-L /opt/local/lib -lml -lcvaux -lhighgui -lcv -lcxcore"と
リストアップすることができる。
この処理は、(ライブラリ作成者によって提供される).pcファイルを参照することによって行われる。
.pcファイルのパスは環境変数PKG_CONFIG_PATHに設定する。

・参考記事
https://www.glamenv-septzen.net/nifty/others/computer/linux_ldd01.html

http://archive.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-libraries.html

http://linux.dogrow.net/?p=25

http://www.yasutomo57jp.com/2010/09/01/linux%E3%81%A7opencv%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E9%81%A9%E5%BD%93%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7/