gcc: verknüpfte Bibliotheken in /usr/local/lib nicht gefunden, aber /etc/ld/so.conf.d/libc.conf Listen?

Ich hab ein problem mit shared-Bibliotheken und gcc. Auf den ersten konnte ich nicht laufen, meine kompilierte Programm, weil ich immer den folgenden Fehler: gcc error while loading shared libraries.

Ich habe einige suchen und fand, dass dies ist, weil die shared library nicht gefunden werden kann. Allerdings hatte ich bereits festgestellt, dass die shared library in /usr/local/lib, die AFAICT ist eine Häufig verwendete Verzeichnis für gemeinsam genutzte Bibliotheken und sollte von der get-go.

Habe ich gelesen, dass Sie festlegen können, LD_LIBRARY_PATH, die für mich gearbeitet hat. Allerdings möchte ich mich nicht festlegen, das jedes mal, wenn ich will laufen meine Programm.

Weitere suchen vorgeschlagen, die Bearbeitung ld.so.conf. Wenn ich sah in diesem hatte es die folgende:

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

Suchen in der ld.so.conf.d-Verzeichnis zeigt mir eine Reihe von Dateien, einschließlich libc.conf. In dieser Datei ist der folgende:

/usr/local/lib

Also meine Frage ist, warum muss ich manuell einstellen, LD_LIBRARY_PATH, wenn der ld.so.conf scheint die libc.conf, welche includes /usr/local/lib?

Gibt es etwas, das fehlt mir hier, die müssen erst konfiguriert werden? Gibt es eine option zur compile-Zeit, die mir fehlt?

Sollte ich beachten Sie, dass zu kompilieren, musste ich den Pfad angeben, in die Bibliothek, ich weiß nicht, ob dies ist ein symptom für mein problem oder normal Verhalten.

Ich sollte auch beachten, dass dies ein Problem für mich, wenn ich mich bereitstellen, meine software auf anderen Systemen. Ich hätte gedacht, dass ich sollte in der Lage sein zu setzen .also an der entsprechenden Stelle, und installieren Sie mein Programm ohne messing mit ld.so.conf.

Ich hoffe das ist das richtige forum für diese Frage, ich habe die FAQ gelesen und ich denke, es ist ok.

Cheers.

  • Haben Sie laufen ldconfig nach jeder änderung (d.h. write-in) /usr/local/lib ?
  • Ich dachte ldconfig musste nur noch ausgeführt werden, nachdem die änderung der conf Dateien, nicht wenn wir eine Datei in /usr/local/lib ?
  • Ich denke, dass ich meine Frage selbst beantwortet, gegoogelt ldconfig und es sieht aus wie es ist ein cache, der aktualisiert werden muss. Ich habe ein ldconfig -p und grep würde für die Bibliothek und es ist nicht da, also sieht aus wie das problem ist der cache, der ldconfig verwaltet. Dank Basile! Soll ich jetzt die Antwort auf meine eigene Frage? Andere Fragen in diesem Bereich machen sich nicht klar, dass ldconfig wird benötigt, um ausgeführt werden, wenn neue Bibliotheken Hinzugefügt werden, die Sie Lesen, die Sie ausführen, wenn Sie die änderung der conf Dateien.
  • Ich fügte hinzu, dass eine Antwort, so können Sie es akzeptieren.
InformationsquelleAutor Metalskin | 2012-09-02
Schreibe einen Kommentar