Ich habe ein kleines Programm geschrieben, das einige Bibliotheken benötigt, einschließlich libboost_filesystem, libboost_program_options und libcurl.
Ich habe es auf meiner Heimmaschine kompiliert und die Binärdatei zu meinem Computer bei der Arbeit genommen, um es dort zu testen. Aber dort gibt es die folgende Fehlermeldung, wenn ich versuche, das Programm zu starten:
%Vor%Aber wenn ich nach dieser Datei suche, sehe ich, dass sie existiert in: /usr/lib/libboost_filesystem.so.1.42.0
Habe ich bei der Kompilierung / Verlinkung meines Programms etwas falsch gemacht? Wenn ja, was muss ich tun, damit es auf anderen Maschinen funktioniert?
Versuchen Sie zunächst, ldconfig -p | grep libboost_filesystem.so
in einer Konsole auszugeben, um sicherzustellen, dass sich die Bibliothek in Ihrem LDAP-Cache befindet.
Wenn dies nicht der Fall ist, müssen Sie möglicherweise eine Datei mit dem Namen boost.conf zum Verzeichnis /etc/ld.so.conf.d hinzufügen. Diese Datei sollte einen Pfad zu Ihren Boost-Bibliotheken enthalten. Führen Sie dann sudo ldconfig
aus, um den LDAP-Cache Ihres Systems zu aktualisieren.
Hoffe, das wird helfen ...
Sieht so aus, als müssten Sie die Bibliothek statisch verknüpfen. Hier ist eine gute Erklärung. Boost statische Verknüpfung
Haben Sie die gleiche Version der Bibliothek boost_filesystem verlinkt? Je nachdem, wie Sie Ihre Anwendung kompilieren, muss dieselbe Version der Bibliothek vorhanden sein.
Sie können versuchen, zu überprüfen, wonach Ihre Anwendung tatsächlich sucht:
%Vor%Überprüfen Sie wahrscheinlich auch Ihre LD_LIBRARY_PATH-Umgebungsvariable.
Könnten Sie sicherstellen, dass /usr/lib/libboost_filesystem.so.1.42.0
keine tote Verbindung ist?
Haben Sie die gemeinsamen Binärdateien von boost kompiliert und sie dem Benutzer zur Verfügung gestellt?
Oft kann boost ohne binary / shared verwendet werden. Wenn Sie jedoch zum Beispiel boost :: filesystem verwenden, müssen Sie die Binärdateien als lib oder shared object erstellen und sicherstellen, dass sie für den freigegebenen Binärsuchpfad der ausführbaren Datei verfügbar sind.
Eine Erläuterung und weitere Details finden Sie in der Boost-Dokumentation. Hier ist die Linux-Version: Ссылка
Von dieser Seite:
Die meisten Boost-Bibliotheken sind nur als Header verfügbar: Sie bestehen ausschließlich aus Header-Dateien enthält Vorlagen und Inline Funktionen und erfordern keine separat kompilierte Bibliotheksbinärdateien oder spezielle Behandlung beim Verknüpfen.
...
Die einzigen Boost-Bibliotheken, die es sein müssen getrennt gebaut sind:
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python (siehe die Boost.Python-Build-Dokumentation bevor Sie es bauen und installieren)
- Boost.Regex
- Boost.Serialisierung
- Boost.Signale
- Boost.System
- Boost.Thread
- Boost.Wave