2012-09-02 5 views
14

共有ライブラリとgccに問題があります。私は次のエラーが発生したため、私はコンパイルしたプログラムを実行できませんでした。共有ライブラリをロード中にgccエラーが発生しました。gcc:/ usr/local/libのリンクライブラリは見つかりませんが、/etc/ld/so.conf.d/libc.confにリストされていますか?

検索しましたが、これは共有ライブラリが見つからないためです。しかし、私は共有ライブラリが/ usr/local/libにあることを既に確認していました。AFAICTは共有ライブラリのためによく使われるディレクトリであり、get goから動作するはずです。

LD_LIBRARY_PATHを設定することができます。しかし私は自分のプログラムを動かすたびにこれを設定したくありません。

さらにld.so.confを編集することをおすすめします。私はこの中で見たときには、次のように持っていた:

include /etc/ld.so.conf.d/*.conf 

ld.so.conf.dディレクトリに探してくれlibc.confを含むファイル、の範囲を示しています。このファイルの中に以下の通りです:

/usr/local/lib 

だから私の質問は、なぜ私はld.so.confが/ usr/local/libを含んlibc.confを使用することが表示されたら、手動でLD_LIBRARY_PATHを設定する必要がありますか?

最初に設定しなければならないものがありますか?コンパイル時に欠けているオプションがありますか?

コンパイルするには、ライブラリへのパスを指定する必要がありましたが、これが私の問題や通常の動作の症状であるかどうかはわかりません。

他のシステムにソフトウェアをデプロイした場合、これは私にとって心配なことです。 .soを適切な場所に置いて、ld.so.confをつぶすことなくプログラムをインストールできるはずだと思ったでしょう。

私はこれがこの質問のための適切なフォーラムであることを願っています。私はFAQを読んで、それは大丈夫だと思います。

乾杯。

+1

'/ usr/local/lib'の変更(すなわち書き込み)のたびに' ldconfig'を実行しましたか? –

+0

私は/ usr/local/libにファイルを置くときではなく、confファイルを変更した後でldconfigを実行しなければならないと考えましたか? – Metalskin

+1

私は自分の質問に答えて、goodled ldconfigと思って、更新が必要なキャッシュがあるようです。私はライブラリのldconfig -pとgrep'dを実行しましたが、そこにはありません。問題はldconfigが管理するキャッシュのように見えます。ありがとうBasile! 私自身の質問に今答えるべきですか?この分野のその他の質問では、新しいlibsが追加されたときにldconfigを実行する必要があることを明確にしていません。confファイルを変更したときに実行することを読んでいます。 – Metalskin

答えて

18

あなたはあなたのケースでは、特に(例えば、そこにいくつかの共有ライブラリのすべての追加や更新後)/usr/local/lib内部のすべての更新後、ldconfig(rootとして)/etc/ld.so.confを介して、または/etc/ld.so.conf.d/の下で構成されたディレクトリのすべての変更後に実行する必要があります。