電子書籍の厳選無料作品が豊富!

環境は、debianEtchなのですが
(1)LD_LIBRARY_PATH=/usr/local/lib
(2)echo "/usr/local/lib" >> /etc/ld.so.conf
 ldconfig

と2通りの設定で実験をしたのですが、
(1)の設定ではプログラムがエラーを吐かずに動く。
(2)の設定では、プログラムがエラーを吐いて動かない。

(1)と(2)の設定では、何が違うのでしょうか。
私の考えではライブラリの検索場所を探してるという同じ位置づけなのです。

どなたかご存知の方がいられましたらご教授のほうお願いします。

A 回答 (2件)

ちなみにどういうエラーが出ていますか?


ライブラリが見つからないと言うことなら、ld.so.confに書き込んだものが間違っているような気がします(タイプミスとか?)。
ライブラリが見つかっているけど、関数等が見つからないのでしたらld.so.confの一番最後に/usr/local/libが書き込まれているので、別にインストールされたライブラリがリンクされていると思われます。この場合は、/etc/ld.so.confをエディタで修正して、/usr/local/libを一番最初にすれば良いと思います。LD_LIBRARY_PATHに設定されたパスはld.so.confよりも先に探しますので、同一名のshared libraryがある場合は順序も考える必要があります。

どのモジュールをリンクしているかはldd <実行ファイル>で確認できます。
    • good
    • 1
この回答へのお礼

よく見るとタイプミスでした。
全角スペースが入っておりそれで動かなかったようです。
ありがとうございます。

お礼日時:2008/09/20 23:34

export LD_LIBRARY_PATH=/usr/local/lib


としても、エラーを吐かずに動きますか ?

この回答への補足

export LD_LIBRARY_PATH=/usr/local/lib
を実行すると、LD_LIBRARY_PATHが組み込まれるので動きだします。
ただ、再起動をすると、消えてしまうみたいでもう一度設定する必要があるみたいなのです。

そこで、
echo "/usr/local/lib" >> /etc/ld.so.confに記述し、ldoconfigでキャッシュを作っておけば再起動してもライブラリパスが飛ばないかなとおもったんですがエラーを吐いて動かないのです。

bashrcに記述しておけば、問題の解決にはなるのですが、
export LD_LIBRARY_PATH=/usr/local/libを、bashrcに書くのはよくないという記事を見たのでできるだけ、
echo "/usr/local/lib" >> /etc/ld.so.confでしたいと考えたのです。

私の中では、LD_LIBRARY_PATHも/etc/ld.so.confも 
ライブラリパスの検索場所を記述しているものだと思っているのですが
二つのコマンドの意味はひょっとして違うのでしょうか?

補足日時:2008/09/20 01:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!