ldd
次のような共有ライブラリに対して実行すると、次libphp5.so
の依存関係があることがわかりますlibmysqlclient.so.16
。
$ ldd ./libphp5.so libmysqlclient.so.16 => /usr/lib/mysql/libmysqlclient.so.16 [その他の依存関係を切り取った]
これらの依存ファイル名とパス ( /usr/lib/mysql/libmysqlclient.so.16
) は、共有ライブラリ バイナリに組み込まれていますか? または、このパスは via などの他の手段によって決定されますが/etc/ld.so.conf.d/mysql-i386.conf
、これには次のものが含まれています。
/usr/lib/mysql/
もう1つのことが私を困惑させています:
ソースからコンパイルした共有ライブラリがあります。これは に依存していlibmysqlclient_r
ます。コンパイラはgcc
、このライブラリを次のように生成するように切り替えます。
gcc -shared -L/usr/lib/mysql -lmysqlclient_r [+その他の各種スイッチ]
私がldd mylib.so
見るとき:
libmysqlclient_r.so.16 => /usr/lib/mysql/libmysqlclient_r.so.16 (0x0055c000)
ただし、/usr/lib/mysql
ディレクトリには次のように表示されます。
-rwxr-xr-x. libmysqlclient_r.so -> libmysqlclient_r.so.16.0.0 lrwxrwxrwx。libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 -rwxr-xr-x. libmysqlclient_r.so.16.0.0 lrwxrwxrwx。libmysqlclient.so -> libmysqlclient.so.16.0.0 lrwxrwxrwx。libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 -rwxr-xr-x. libmysqlclient.so.16.0.0
libmysqlclient_r.so
は へのシンボリック リンクなので、依存関係が として表示されるのはlibmysqlclient_r.so.16.0.0
なぜですか。ここで私が見逃している魔法はありますか?ldd
libmysqlclient_r.so.16
長年 Windows 開発者として働いてきた私は、gcc
Linux の開発に少し慣れていません。
私の Linux ディストリビューションは CentOS 6.0 x86-32bit です。