J'ai installé les bibliothèques partagées 32 bits, mais j'obtiens toujours cette erreur lorsque j'essaie d'installer pogoplug :
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
Dois-je faire autre chose pour charger le programme à partir des bibliothèques 32 bits ?
Une question similaire a été posée plus tôt cette année, mais n'a reçu aucune réponse.
Réponse acceptée :
Pour certaines bibliothèques, il est possible d'installer à la fois les bibliothèques 32 bits et 64 bits sur un système 64 bits. Ceci est disponible via ia32-libs
package sur Ubuntu 10.04 et versions antérieures. Selon la liste de fichiers de ia32-libs
, il n'y a pas de libfuse.so.2
fichier inclus. Cela signifie que vous ne pouvez pas installer les deux architectures en même temps.
Depuis Ubuntu 11.10 Oneiric, il est possible pour les packages d'autoriser l'installation simultanée de différentes architectures, ce qui s'appelle "Multi-Arch". Malheureusement, si j'en crois la liste de fichiers de libfuse2
sur Oneiric, ce package n'a pas encore été transféré. Cela peut être déterminé à partir des dépendances du package :si un package dépend de multiarch-support
(comme libdrm2), il prend en charge le support multi-arch. Cependant, ce n'est pas une garantie que le package peut être installé pour plusieurs architectures simultanément.
Pour interroger votre cache local sur les fonctionnalités multi-arch d'un package, dites libc6
, exécutez :
apt-cache show libc6 | grep ^Multi-Arch:
Pour cette commande, la sortie est Multi-Arch: same
. Cela signifie que les versions 32 bits et 64 bits d'un package peuvent être installées simultanément. S'il n'y a pas de sortie, le package n'est pas prêt pour la prise en charge multi-arch. Les autres valeurs possibles sont foreign
(non co-installable, mais il peut être utilisé pour satisfaire les dépendances d'autres architectures) et allowed
(iirc, un seul package peut être installé à la fois, mais le package peut être utilisé pour satisfaire les dépendances d'autres packages)
Vous devriez pouvoir installer des packages 32 bits sur un système 64 bits avec :
sudo apt-get install packagename:i386
Création de libfuse 32 bits pour les machines 64 bits
Étant donné que la bibliothèque de fusibles 32 bits n'est pas fournie avec ia32-libs
, vous n'avez pas d'autre choix que de le construire vous-même.
-
Installez les dépendances de build pour fuse et obtenez le code source :
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
Configurez l'arborescence des sources et construisez le fusible (ajustez le nom du répertoire si nécessaire) :
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
Installez la bibliothèque de fusibles 32 bits (ajustez la version en conséquence) :
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/
-
Mettez à jour le cache de l'éditeur :
sudo ldconfig
-
(facultatif) Supprimez les fichiers sources :
cd .. rm -r fuse-2.8.4