Có thể cài đặt thư viện 32 bit trên hệ thống 64 bit không?


8

Tôi đã cài đặt các thư viện chia sẻ 32 bit, nhưng tôi vẫn gặp lỗi này khi cố gắng cài đặt pogoplug:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

Có điều gì khác tôi cần phải làm để tải chương trình từ các thư viện 32 bit không?

Một câu hỏi tương tự đã được hỏi vào đầu năm nay, nhưng không được đưa ra bất kỳ câu trả lời nào.

Câu trả lời:


9

Đối với một số thư viện, có thể cài đặt cả thư viện 32 bit và 64 bit trên hệ thống 64 bit. Điều này có sẵn thông qua ia32-libsgói trên Ubuntu 10.04 trở về trước. Theo các filelist củaia32-libs , không có libfuse.so.2tập tin bao gồm. Điều đó có nghĩa là bạn không thể cài đặt cả hai kiến ​​trúc cùng một lúc.

Kể từ Ubuntu 11.10 Oneiric, các gói có thể cho phép cài đặt đồng thời cho các kiến ​​trúc khác nhau được gọi là "Multi-Arch". Thật không may, nếu tôi có thể tin rằng nhà làm phim của libfuse2Oneiric , gói này vẫn chưa được chuyển đổi. Điều đó có thể được xác định từ các phụ thuộc gói: nếu một gói phụ thuộc vào multiarch-support(như libdrm2 ), thì nó có hỗ trợ cho hỗ trợ đa vòm. Tuy nhiên, đây không phải là một đảm bảo rằng gói có thể được cài đặt cho nhiều kiến ​​trúc cùng một lúc.

Để truy vấn bộ đệm cục bộ của bạn cho các khả năng đa vòm của gói, giả sử libc6, hãy chạy:

apt-cache show libc6 | grep ^Multi-Arch:

Đối với lệnh này, đầu ra là Multi-Arch: same. Điều đó có nghĩa là cả hai phiên bản 32 bit và 64 bit của gói có thể được cài đặt cùng một lúc. Nếu không có đầu ra, gói không sẵn sàng cho hỗ trợ đa vòm. Các giá trị có thể khác là foreign(không thể cài đặt cùng, nhưng nó có thể được sử dụng để đáp ứng các phụ thuộc của các kiến ​​trúc khác) và allowed(iirc, chỉ một gói được phép cài đặt tại một thời điểm, nhưng gói có thể được sử dụng để đáp ứng các phụ thuộc khác gói)

Bạn có thể cài đặt các gói 32 bit trên hệ thống 64 bit với:

sudo apt-get install packagename:i386

Xây dựng libfuse 32 bit cho máy 64 bit

Vì thư viện cầu chì 32 bit không được cung cấp ia32-libs, bạn không có lựa chọn nào khác ngoài việc tự xây dựng nó.

  1. Cài đặt các phụ thuộc xây dựng cho cầu chì và lấy mã nguồn:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Cấu hình cây nguồn và xây dựng cầu chì (điều chỉnh tên thư mục nếu cần):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Cài đặt thư viện cầu chì 32 bit (điều chỉnh phiên bản cho phù hợp):

    sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2
    sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
    
  4. Cập nhật bộ đệm liên kết:

    sudo ldconfig
    
  5. (tùy chọn) Xóa các tệp nguồn:

    cd ..
    rm -r fuse-2.8.4
    

0

Có, có. Cài đặt ia32. Khi đã xong, bây giờ bạn có thể cài đặt bất kỳ chương trình 32 bit nào trên nền tảng 64 bit.


Tôi đã cài đặt ia32 (đó là những gì tôi đang nói với các thư viện chia sẻ). Điều này chỉ mang lại lỗi với libfuse.so.2
Mat

1
ia32-libskhông chứa tất cả các thư viện 32 bit.
Lekensteyn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.