Como ativar a compatibilidade binária de 32 bits no Linux Mint 11 x64

8

Eu instalei recentemente o x64 Linux Mint 11, basicamente o Ubuntu Natty. Desde a instalação, descobri que os aplicativos de 32 bits que costumavam ser executados no meu sistema Ubuntu são rejeitados pelo meu sistema Mint 11. Quando uso o utilitário 'file' para verificar o binário, ele o identifica corretamente como um elfo de 32 bits, mas não consigo invocar o aplicativo.

Eu tentei iniciá-lo do bash e do os.system à la python, sem sucesso, então suspeito que ele deva ter algo a ver com o modo de compatibilidade binária de 32 bits, mas meu conhecimento desse subsistema e como habilitá-lo é limitado, alguém pode ajudar?

obrigado

Gearoid Murphy
fonte
+1 thx por perguntar. Eu mudei de natty para Mint também!
Alain Pannetier

Respostas:

5

Instale o ia32-libs e verifique se o arquivo do aplicativo está marcado como executável, que deve fazer o trabalho! :)

Edição tardia:

A lib poderia ser chamada de ia32-libs-multiarch em vez de ia32-libs.
apt-get install ia32-libs-multiarch

Ruairi Fullam
fonte
Excelente, funcionou perfeitamente, obrigado !. Estou um pouco incerto sobre exatamente por que funcionou ?, mesmo que estivesse faltando as bibliotecas antes, o ldd teria pelo menos listado os arquivos de objetos compartilhados necessários. Antes de instalar o ia32-libs, o ldd simplesmente dizia que o binário não era um executável vinculado dinamicamente. Existe algum outro segredo que o ia32-libs usa para executar aplicativos de 32 bits?
Gearoid Murphy
Não tenho certeza para ser honesto, mas é o que funcionou para mim! :) (ps Marque a resposta se quiser!). :)
Ruairi Fullam 06/07
Interessante, eu removi o ia32-libs e o executável ainda funcionava (está estaticamente vinculado). Após um exame mais detalhado da saída do 'lsmod', posso ver que existe um módulo chamado "binfmt_misc", é o que eu estava me referindo. Certeza de que esse é o principal requisito para oferecer suporte a formatos binários alternativos, como 32 bits ou COFF exe no Windows.
Gearoid Murphy
2

Não sei nada sobre o MINT, mas tenho alguma experiência com o Debian: Para executar binários de 32 bits, você precisa em quase todos os casos as bibliotecas que suportam binários de 32 bits em um ambiente de 64 bits. Tentar

apt-get install ia32-libs

Se houver apt-get no seu sistema ... (ou tente o aptitude ou o que vier com o MINT)

Você pode verificar quais bibliotecas são necessárias usando o ldd :

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

Se houver alguma biblioteca ausente, o ldd informará.

tremer
fonte
Quando usei o ldd no binário de 32 bits antes de instalar o ia32-libs, ele retornou um erro dizendo que o binário não era um executável vinculado dinamicamente, eu sei que há um módulo do kernel criado para lidar com diferentes formatos executáveis, e eu tinha antecipado que era isso que precisava ser configurado para ativar a compatibilidade binária de 32 bits.
Gearoid Murphy