Ho installato le librerie condivise a 32 bit, ma ricevo ancora questo errore durante il tentativo di installare pogoplug:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
C'è qualcos'altro che devo fare per caricare il programma dalle librerie a 32 bit?
Una domanda simile è stata posta all'inizio di quest'anno, ma non è stata data alcuna risposta.
Risposta accettata:
Per alcune librerie, è possibile avere sia le librerie a 32 bit che a 64 bit installate su un sistema a 64 bit. Questo è disponibile tramite ia32-libs
pacchetto su Ubuntu 10.04 e precedenti. Secondo l'elenco di file di ia32-libs
, non esiste libfuse.so.2
file incluso. Ciò significa che non puoi avere entrambe le architetture installate contemporaneamente.
Da Ubuntu 11.10 Oneiric, è possibile che i pacchetti consentano l'installazione simultanea per diverse architetture che viene chiamata "Multi-Arch". Sfortunatamente, se posso credere alla lista dei file di libfuse2
su Oneiric, questo pacchetto non è stato ancora trasferito. Questo può essere determinato dalle dipendenze del pacchetto:se un pacchetto dipende da multiarch-support
(come libdrm2), ha il supporto per il supporto multi-arch. Tuttavia, questo non una garanzia che il pacchetto può essere installato per più architetture contemporaneamente.
Per interrogare la tua cache locale per le capacità multi-arch di un pacchetto, pronuncia libc6
, esegui:
apt-cache show libc6 | grep ^Multi-Arch:
Per questo comando, l'output è Multi-Arch: same
. Ciò significa che è possibile installare contemporaneamente sia la versione a 32 bit che quella a 64 bit di un pacchetto. Se non è presente alcun output, il pacchetto non è pronto per il supporto multi-arch. Altri possibili valori sono foreign
(non coinstallabile, ma può essere utilizzato per soddisfare le dipendenze di altre architetture) e allowed
(iirc, è consentito installare un solo pacchetto alla volta, ma il pacchetto può essere utilizzato per soddisfare le dipendenze di altri pacchetti)
Dovresti essere in grado di installare pacchetti a 32 bit su un sistema a 64 bit con:
sudo apt-get install packagename:i386
Creazione di libfuse a 32 bit per macchine a 64 bit
Poiché la libreria dei fusibili a 32 bit non è fornita con ia32-libs
, non hai altra scelta che costruirlo da solo.
-
Installa le dipendenze di build per fuse e ottieni il codice sorgente:
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
Configura l'albero dei sorgenti e compila il fusibile (regola il nome della directory se necessario):
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
Installa la libreria dei fusibili a 32 bit (regola la versione di conseguenza):
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/
-
Aggiorna la cache del linker:
sudo ldconfig
-
(facoltativo) Rimuovere i file di origine:
cd .. rm -r fuse-2.8.4