Napisałem mały program, który wymaga niektórych bibliotek, w tym libboost_filesystem, libboost_program_options i libcurl.Skompilowany program C++ podnosi "nie można otworzyć pliku współdzielonego obiektu" w innym systemie, chociaż plik jest obecny
Skompilowałem to na moim komputerze domowym i zabrałem plik binarny do mojego komputera w pracy, aby go tam przetestować. Ale nie daje następujący komunikat o błędzie podczas próby uruchomienia programu:
error while loading shared libraries:
libboost_filesystem.so.1.42.0: cannot
open shared object file
ale kiedy szukać tego pliku widzę, że istnieje ona w: /usr/lib/libboost_filesystem.so.1.42.0
Czy coś nie tak podczas kompilacji/łączenia mojego programu? Jeśli tak, co mam zrobić, aby działało na innych urządzeniach?
Często stwierdzam, że 'ldd' może mi pomóc dowiedzieć się, co jest nie tak. Co mówi "ldd./Your_executable"? –
Z tego, co powiedziałeś, wygląda na to, że powinno działać. Może występować konflikt 32- lub 64-bitowy. Spróbuj uruchomić 'file./Your_executable' oraz' file/usr/lib/libboost_filesystem.so.1.42.0', aby sprawdzić, czy architektury się zgadzają :) –
Wow masz rację. program zbudowany jest w wersji 32-bitowej, a obecna biblioteka to 64-bitowa wersja – tyrondis