GNU/Linux >> Znalost Linux >  >> Ubuntu

Je možné mít na 64bitovém systému nainstalovány 32bitové knihovny?

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.

  1. 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
    
  2. 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
    
  3. 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/
    
  4. Aktualizujte mezipaměť linkeru:

    sudo ldconfig
    
  5. (volitelné) Odeberte zdrojové soubory:

    cd ..
    rm -r fuse-2.8.4
    

Ubuntu
  1. Debian – Jak replikovat výběr nainstalovaných balíčků z jednoho systému Debian do druhého? (debian Wheezy)?

  2. Lze Ubuntu nainstalovat na systémy bez připojení k internetu?

  3. Nemůžete nainstalovat několik vývojových knihoven?

  1. Jak nainstalovat Termite?

  2. Upgrade z 32bit na 64bit??

  3. Jak zjistím, zda je v systému nainstalován Apache?

  1. Jak nainstalovat Ruby na Windows 10

  2. Jak nainstalovat Webmin na Ubuntu 20.04

  3. Nainstalujte balíčky RPM na Ubuntu