Tôi đã viết một chương trình nhỏ yêu cầu một số thư viện bao gồm libboost_filesystem, libboost_program_options và libcurl.Chương trình biên dịch C++ tăng "không thể mở tệp đối tượng được chia sẻ" trên hệ thống khác mặc dù tệp hiện tại là
Tôi đã biên dịch nó trên máy tính ở nhà và lấy mã nhị phân vào máy tính của tôi tại nơi làm việc để kiểm tra ở đó. Nhưng có nó mang lại cho các thông báo lỗi sau khi tôi cố gắng để bắt đầu chương trình:
error while loading shared libraries:
libboost_filesystem.so.1.42.0: cannot
open shared object file
nhưng khi tôi tìm kiếm tập tin này, tôi thấy rằng nó tồn tại trong: /usr/lib/libboost_filesystem.so.1.42.0
Tôi có vấn đề gì trong quá trình biên dịch/liên kết chương trình của mình không? Nếu có thì tôi phải làm gì để làm cho nó hoạt động trên các máy khác?
Tôi thường thấy rằng 'ldd' có thể giúp tôi tìm hiểu điều gì sai. 'Ldd./Your_executable' có nghĩa là gì? –
Từ những gì bạn đã nói, có vẻ như nó sẽ hoạt động. Có thể có xung đột 32 bit so với 64 bit. Hãy thử chạy 'file./Your_executable' và' file/usr/lib/libboost_filesystem.so.1.42.0' để kiểm tra xem các kiến trúc có phù hợp không :) –
wow bạn nói đúng. chương trình được xây dựng như 32bit và thư viện hiện tại là 64bit – tyrondis