Ich habe die gemeinsam genutzten 32-Bit-Bibliotheken installiert, erhalte aber immer noch diesen Fehler, während ich versuche, pogoplug zu installieren:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
Muss ich noch etwas tun, damit das Programm aus den 32-Bit-Bibliotheken geladen wird?
Eine ähnliche Frage wurde Anfang dieses Jahres gestellt, aber es gab keine Antwort.
Akzeptierte Antwort:
Bei einigen Bibliotheken ist es möglich, sowohl die 32-Bit- als auch die 64-Bit-Bibliotheken auf einem 64-Bit-System zu installieren. Dies ist über die ia32-libs
verfügbar Paket auf Ubuntu 10.04 und früher. Gemäß der Dateiliste von ia32-libs
, gibt es kein libfuse.so.2
Datei enthalten. Das bedeutet, dass Sie nicht beide Architekturen gleichzeitig installiert haben können.
Seit Ubuntu 11.10 Oneiric ist es für Pakete möglich, eine gleichzeitige Installation für verschiedene Architekturen zu ermöglichen, was als „Multi-Arch“ bezeichnet wird. Leider, wenn ich der Dateiliste von libfuse2
glauben darf Auf Oneiric wurde dieses Paket noch nicht umgestellt. Das kann anhand der Paketabhängigkeiten ermittelt werden:ob ein Paket von multiarch-support
abhängt (wie libdrm2) hat es Unterstützung für Multi-Arch-Unterstützung. Dies ist jedoch nicht der Fall eine Garantie, dass das Paket für mehrere Architekturen gleichzeitig installiert werden kann.
Um Ihren lokalen Cache nach den Multi-Arch-Fähigkeiten eines Pakets abzufragen, sagen Sie libc6
, ausführen:
apt-cache show libc6 | grep ^Multi-Arch:
Für diesen Befehl ist die Ausgabe Multi-Arch: same
. Das bedeutet, dass sowohl die 32-Bit- als auch die 64-Bit-Version eines Pakets gleichzeitig installiert werden können. Wenn keine Ausgabe erfolgt, ist das Paket nicht bereit für die Unterstützung mehrerer Archs. Andere mögliche Werte sind foreign
(nicht mitinstallierbar, aber es kann verwendet werden, um die Abhängigkeiten anderer Architekturen zu erfüllen) und allowed
(iirc, es darf immer nur ein Paket installiert werden, aber das Paket kann verwendet werden, um Abhängigkeiten von anderen Paketen zu erfüllen)
Sie sollten in der Lage sein, 32-Bit-Pakete auf einem 64-Bit-System zu installieren mit:
sudo apt-get install packagename:i386
Erstellen einer 32-Bit-Libfuse für 64-Bit-Rechner
Da die 32-Bit-Sicherungsbibliothek nicht mit ia32-libs
geliefert wird , haben Sie keine andere Wahl, als es selbst zu bauen.
-
Installieren Sie die Build-Abhängigkeiten für Fuse und erhalten Sie den Quellcode:
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
Konfigurieren Sie den Quellbaum und erstellen Sie eine Sicherung (passen Sie den Verzeichnisnamen an, falls erforderlich):
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
Installieren Sie die 32-Bit-Fuse-Bibliothek (passen Sie die Version entsprechend an):
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/
-
Aktualisieren Sie den Linker-Cache:
sudo ldconfig
-
(optional) Entfernen Sie die Quelldateien:
cd .. rm -r fuse-2.8.4