Saya telah menginstal perpustakaan bersama 32 bit, namun saya masih mendapatkan kesalahan ini saat mencoba menginstal pogoplug:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
Apakah ada hal lain yang harus saya lakukan agar program dapat dimuat dari perpustakaan 32 bit?
Pertanyaan serupa diajukan awal tahun ini, tetapi tidak ada jawaban.
Jawaban yang Diterima:
Untuk beberapa pustaka, mungkin saja pustaka 32-bit dan 64-bit diinstal pada sistem 64-bit. Ini tersedia melalui ia32-libs
paket di Ubuntu 10.04 dan sebelumnya. Menurut daftar file ia32-libs
, tidak ada libfuse.so.2
file disertakan. Itu berarti Anda tidak dapat menginstal kedua arsitektur sekaligus.
Sejak Ubuntu 11.10 Oneiric, paket memungkinkan instalasi simultan untuk arsitektur berbeda yang disebut "Multi-Arch". Sayangnya, jika saya percaya daftar file libfuse2
di Oneiric, paket ini belum ditransisikan. Itu dapat ditentukan dari dependensi paket:jika sebuah paket bergantung pada multiarch-support
(seperti libdrm2), ia memiliki dukungan untuk dukungan multi-lengkungan. Namun, ini tidak jaminan bahwa paket tersebut dapat diinstal untuk beberapa arsitektur secara bersamaan.
Untuk menanyakan cache lokal Anda untuk kemampuan multi-lengkungan suatu paket, ucapkan libc6
, jalankan:
apt-cache show libc6 | grep ^Multi-Arch:
Untuk perintah ini, outputnya adalah Multi-Arch: same
. Itu berarti bahwa paket versi 32-bit dan 64-bit dapat diinstal sekaligus. Jika tidak ada output, paket tidak siap untuk dukungan multi-arch. Nilai lain yang mungkin adalah foreign
(tidak dapat dipasang bersama, tetapi dapat digunakan untuk memenuhi dependensi arsitektur lain) dan allowed
(iirc, hanya satu paket yang diizinkan untuk diinstal pada satu waktu, tetapi paket tersebut dapat digunakan untuk memenuhi dependensi paket lain)
Anda seharusnya dapat menginstal paket 32-bit pada sistem 64-bit dengan:
sudo apt-get install packagename:i386
Membangun libfuse 32-bit untuk mesin 64-bit
Karena pustaka sekering 32-bit tidak disertakan dengan ia32-libs
, Anda tidak punya pilihan lain selain membangunnya sendiri.
-
Instal dependensi build untuk fuse dan dapatkan kode sumber:
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
Konfigurasikan pohon sumber dan bangun sekering (sesuaikan nama direktori jika diperlukan):
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
Instal pustaka sekering 32-bit (sesuaikan versinya):
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/
-
Perbarui cache penaut:
sudo ldconfig
-
(opsional) Hapus file sumber:
cd .. rm -r fuse-2.8.4