kumasysjp

lddコマンド e.g. cannot open shared object file (soが開けない)

make 作業中に,  cannot open shared object file というメッセージが出たときは,  その  .so にアクセスできないことを意味するが、ではそれをどこに置けばよいか?

ldd [実行ファイル]

を打つと、それがリンクする動的ライブラリがフルパスで表示される。開けない場合は Not などと出ている。多くの場合、所定のディレクトリにある。

 

すなわち、不足しているといわれた so を  それを参考に、該当するディレクトリにコピーすればよい。

たとえば、 ldd  の結果、

$ ldd [実行ファイル]

/usr/lib/xxxx/A.so/usr/lib/xxxx/B.so C.so  :Not found

などと出ている場合、  ディレクトリ /usr/lib/xxxx/  に  C.so をコピーすればいいんだな、という推測が立つ。