É possível ter bibliotecas de 32 bits instaladas em um sistema de 64 bits?


8

Eu tenho as bibliotecas compartilhadas de 32 bits instaladas, mas ainda estou recebendo esse erro ao tentar instalar o pogoplug:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

Há algo mais que preciso fazer para carregar o programa das bibliotecas de 32 bits?

Uma pergunta semelhante foi feita no início deste ano, mas não recebeu resposta.

Respostas:


9

Para algumas bibliotecas, é possível ter as bibliotecas de 32 e 64 bits instaladas em um sistema de 64 bits. Está disponível através do ia32-libspacote no Ubuntu 10.04 e anterior. De acordo com a lista de arquivos deia32-libs , não há libfuse.so.2arquivo incluído. Isso significa que você não pode ter as duas arquiteturas instaladas ao mesmo tempo.

Desde o Ubuntu 11.10 Oneiric, é possível que os pacotes permitam a instalação simultânea de diferentes arquiteturas, chamada "Multi-Arch". Infelizmente, se eu puder acreditar na lista de arquivos do libfuse2Oneiric , este pacote ainda não foi transferido. Isso pode ser determinado a partir das dependências do pacote: se um pacote depende multiarch-support(como libdrm2 ), ele possui suporte para suporte a vários arcos. No entanto, isso não garante que o pacote possa ser instalado para várias arquiteturas simultaneamente.

Para consultar o cache local quanto aos recursos de vários arcos de um pacote, digamos libc6, execute:

apt-cache show libc6 | grep ^Multi-Arch:

Para este comando, a saída é Multi-Arch: same. Isso significa que as versões de 32 e 64 bits de um pacote podem ser instaladas por vez. Se não houver saída, o pacote não está pronto para suporte a vários arcos. Outros valores possíveis são foreign(não co-instaláveis, mas podem ser usados ​​para satisfazer as dependências de outras arquiteturas) e allowed(iirc, apenas um pacote pode ser instalado por vez, mas o pacote pode ser usado para satisfazer dependências de outros pacotes)

Você deve conseguir instalar pacotes de 32 bits em um sistema de 64 bits com:

sudo apt-get install packagename:i386

Construindo libfuse de 32 bits para máquinas de 64 bits

Como a biblioteca de fusíveis de 32 bits não é fornecida ia32-libs, você não tem outra escolha a não ser construí-la.

  1. Instale as dependências de construção para o fusível e obtenha o código fonte:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Configure a árvore de origem e construa o fusível (ajuste o nome do diretório, se necessário):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Instale a biblioteca de fusíveis de 32 bits (ajuste a versão de acordo):

    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. Atualize o cache do vinculador:

    sudo ldconfig
    
  5. (opcional) Remova os arquivos de origem:

    cd ..
    rm -r fuse-2.8.4
    

0

Sim existe. Instale o ia32. Feito isso, agora você pode instalar qualquer programa baseado em 32 bits em uma plataforma de 64 bits.


Eu tinha o ia32 instalado (era sobre isso que eu estava falando com as bibliotecas compartilhadas). Isso só trouxe o erro com libfuse.so.2
Mat

11
ia32-libsnão contém todas as bibliotecas de 32 bits.
Lekensteyn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.