Tips記事
» 2001年10月24日 00時00分 UPDATE

「file is not a dynamic executable or shared object」とエラー表示される

[木田佳克,ITmedia]

 コンパイルからメイク作業では問題なかったものの,いざ起動させようとした場合,次のようなエラーが表示されてしまうことがある。

# ldd a.out error in loading shared libraries: libpisock.so.3: cannot open shared object file: No such file or directory

 これは,一般的にコンパイル時に作成されたライブラリにリンクしようとしているが,ファイルが見つからないという意味だ。

 ここでの例は,libpisock.so.3ファイルが見当たらないという内容だが,このファイルを検索すると/usr/local/libに存在するとしよう(# locate libpisock.so.3などとして検索したものと想定する)。しかし,ライブラリとしては,次のように認識されていない。

# ldconfig -v |grep libpisock.so.3
#

 このような際は,次のようにldconfigコマンドを実行して新たに追加されたライブラリをデータベースに追加させなければならない。しかし,これでも同様のエラーが表示される場合には,検索先ライブラリを指定する設定ファイルを確認してみよう。

# vi /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib
/usr/local/lib ←追加する

# ldconfig

 ld.so.confファイル内に対象となるライブラリが存在するディレクトリが含まれていない時は,最下段に追加すればよい。続けてldconfigを実行すれば前述のようにデータベース更新される。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ