Mám nainstalované 32bitové sdílené knihovny, přesto se mi při pokusu o instalaci pogoplug stále zobrazuje tato chyba:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
Je ještě něco, co musím udělat, aby se program načetl z 32bitových knihoven?
Podobná otázka byla položena na začátku tohoto roku, ale nedostala žádnou odpověď.
Přijatá odpověď:
U některých knihoven je možné mít na 64bitovém systému nainstalovány 32bitové i 64bitové knihovny. To je dostupné prostřednictvím ia32-libs
balíček na Ubuntu 10.04 a starší. Podle seznamu souborů ia32-libs
, neexistuje žádný libfuse.so.2
součástí souboru. To znamená, že nemůžete mít nainstalované obě architektury najednou.
Od Ubuntu 11.10 Oneiric je možné, aby balíčky umožňovaly současnou instalaci pro různé architektury, což se nazývá „Multi-Arch“. Bohužel, pokud mohu věřit seznamu souborů libfuse2
na Oneiric tento balíček ještě nebyl převeden. To lze zjistit ze závislostí balíčku:pokud balíček závisí na multiarch-support
(jako libdrm2), má podporu pro multi-arch podporu. To však není záruka, že balíček lze nainstalovat pro více architektur současně.
Chcete-li se dotázat místní mezipaměti na schopnosti balíčku s více archy, řekněte libc6
, spustit:
apt-cache show libc6 | grep ^Multi-Arch:
Pro tento příkaz je výstupem Multi-Arch: same
. To znamená, že najednou lze nainstalovat 32bitovou i 64bitovou verzi balíčku. Pokud není k dispozici žádný výstup, balíček není připraven na podporu více oblouků. Další možné hodnoty jsou foreign
(nelze jej instalovat společně, ale lze jej použít k uspokojení závislostí jiných architektur) a allowed
(iirc, současně je povoleno instalovat pouze jeden balíček, ale balíček lze použít k uspokojení závislostí jiných balíčků)
Měli byste být schopni nainstalovat 32bitové balíčky na 64bitový systém pomocí:
sudo apt-get install packagename:i386
Vytváření 32bitové knihovny libfuse pro 64bitové počítače
Protože knihovna 32bitových pojistek není dodávána s ia32-libs
, nemáte jinou možnost, než si to postavit sami.
-
Nainstalujte závislosti sestavení pro fuse a získejte zdrojový kód:
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
Nakonfigurujte zdrojový strom a sestavte pojistku (v případě potřeby upravte název adresáře):
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
Nainstalujte 32bitovou knihovnu pojistek (příslušně upravte verzi):
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/
-
Aktualizujte mezipaměť linkeru:
sudo ldconfig
-
(volitelné) Odeberte zdrojové soubory:
cd .. rm -r fuse-2.8.4