Das Programm kompiliert problemlos mit boost-libs, aber Fehler, wenn es läuft
In Kürze...
C++ - Programm (mit dem boost-libraries) kompiliert fein in Eclipse, aber dann “error while loading shared libraries: libboost_thread.so.1.46.1: nicht öffnen können shared object-Datei: Keine solche Datei oder das Verzeichnis" gezeigt, wenn es läuft.
Details
Mir läuft ein basic-Programm auf C++ um zu überprüfen, dass ich kann verwenden die boost Bibliotheken threading richtig.
#include <boost/thread/thread.hpp>
#include <iostream>
void hello ()
{
Std::cout<<”Hello, I am a thread”<<std::endl;
}
int main ()
{
boost::thread th1(&hello);
th1.join();
}
Den code kompiliert wunderbar, so glaubte ich, hatte ich installiert und richten Sie die boost-Bibliotheken ordnungsgemäß (Hinzugefügt Verzeichnisse einschließen etc)
Jedoch wenn ich versuche das Programm auszuführen, bekomme ich folgende Fehlermeldung in der console
error while loading shared libraries: libboost_thread.so.1.46.1: cannot open shared object file: No such file or directory
- haben Sie versucht, zu finden, die libboost_thread.so.1.46.1 Datei auf Ihrem system? Ist es im Suchpfad?
- libboost_thread.so.1.46.1 ist auf meinem system, finde ich es kein problem. Es ist availble in das library Verzeichnis zu.
- Gibt es irgendetwas, was Sie zu tun haben, um shared library (.so) Dateien zu machen LD_LIBRARY_PATH sehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein sehr ähnliches Problem mit FreeFileSYnc, kompiliert in Ordnung, aber nicht starten, wegen einer libboost-thread-Fehler :
Um es zu beheben habe ich :
Es kann anderen Menschen helfen.
Haben Sie überprüft, ob die
libboost_thread.so.1.46.1
ist derzeitLD_LIBRARY_PATH
?Kopieren Sie die library an Ihre
LD_LIBRARY_PATH
dieser Pfad gesucht wird für die dynamischen Bibliotheken(so) zur Laufzeit.LD_LIBRARY_PATH
ist die Menge der Pfade sucht der compiler in während der Suche für die statische und shared libraries angegeben für die Verknüpfung. In der Regel gibt nur den Pfad und nicht die Bibliothek in der environment-variableLD_LIBRARY_PATH
. Dieser Fehler ist während der Ausführung, die, wenn die dynamische Bibliothek geladen wird.boost-thread ist ein dynamische Bibliothek. Es muss zur Laufzeit für das Programm laufen zu lassen (wie eine DLL unter Windows).
Etwas spät zur party, aber belästigt den ganzen Tag mit dem gleichen problem. Ich habe vor kurzem installiert die neueste
boost 1_51_0
lokal in meiner$HOME/bin/boost_1_51_0
.Was für mich gearbeitet hat, war der export der include-und library-Pfad durch das hinzufügen dieser Zeilen in meine
.bash_rc
:Dann fügen Sie die include path und lib-Pfad zu Ihrem
Makefile
:Dann können Sie die libs von
1_51
überIch hatte das gleiche problem, und
ldconfig
nicht beheben.Wenn Sie, wie ich es getan habe, installiert die boost-Bibliotheken mit einem einfachen
bjam
Befehl, die Chancen sind Sie installiert, die Bibliotheken in einem Bühne Unterordner. Sehen Sie diese Seite als Referenz. Was für mich gearbeitet wurde, führen Sie die folgenden: