Linux コマンド ldd, ldconfig

Linux のコマンドのお勉強です.(すごい基礎的で恐縮ですが...)

ldd : 共有ライブラリへの依存関係参照.

 使おうとしている実行ファイルが共有ライブラリを用いている際,実行時に動的リンクされます.つまり,実行時にメモリに読み込まれて使われます.このコマンドでは,リンクしているライブラリの一覧を調べることができます.例えば,今 ZED Stereo Camera の導入をしているんですが,その一つの実行ファイルがリンクしている共有ライブラリを調べたければ,下記のように ldd を実行すればわかります.ちょっとしたコマンドに対して ldd をやって見ると,以下に多くのライブラリが使われているのかがわかりますね.

$ ldd ZED_Camera_Control

linux-vdso.so.1 => (0x00007ffc63fe7000)
libsl_zed.so => /usr/local/zed/lib/libsl_zed.so (0x00007f48f4b53000)
libsl_core.so => /usr/local/zed/lib/libsl_core.so (0x00007f48f4912000)
・・・・

$ ldd /bin/ls

linux-vdso.so.1 => (0x00007ffef4d88000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f0275917000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f027554e000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f02752dd000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f02750d9000)
/lib64/ld-linux-x86-64.so.2 (0x0000561ed5bde000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0274ebc000)


ldconfig : 共有ライブラリを探索するパスの設定.

 実行時に動的リンクされるライブラリの場所をシステムに把握させておく必要があります.このコマンドでは,共有ライブラリを探索するパスを指定できます.ライブラリパスは /etc/ld.so.conf.d に conf ファイルを作成し,作成後に ldconfig コマンドを実行すればライブラリパスとして設定してくれるみたいです.今回はお試しに自分のローカルで OpenCV 3.1.0 をビルドしたので,そのパスを/etc/ld.so.conf.d/opencv.confというファイルを作成してそこに記述しました.