Execute o aplicativo de 64 bits no sistema de 32 bits (Ubuntu)

6

Todas as perguntas que vi se referem à execução de um aplicativo de 32 bits em um sistema de 64 bits.

Estou executando o Ubuntu 12.04 32 bit (na verdade o elementary OS Luna, que é baseado nele) e estou tentando executar um aplicativo de 64 bits que se recusa a abrir. Executando:

./64bit_app.run

(onde 64bit_app.run é o aplicativo de 64 bits que estou tentando executar) resulta em:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

que se traduz em " não pode executar / executar / abrir arquivo binário ".

Devo poder executá-lo? É possível executar um aplicativo de 64 bits em um sistema de 32 bits? Se sim, como?

    
por Gabriel 06.03.2014 / 03:02

3 respostas

5

Você não pode fazer isso diretamente no Linux em x86_64 com um kernel de 32 bits. Você precisa de um kernel de 64 bits para poder executar o código de 64 bits. (Nota: kernel. Você pode ter 32bit userland em execução em um kernel de 64 bits e instalar suporte para binários de 64 bits. Como isso é fácil depende da distribuição. Exemplo aqui para o Debian.)

Alguns softwares de virtualização são capazes de fazer isso (com restrições quanto ao tipo de CPU que você está usando), e os emuladores também podem fazer isso. Mas, para executá-lo nativamente, você precisará de um kernel de 64 bits.

Como a maioria das distribuições de 64 bits tem suporte a 32 bits (seja por padrão ou instalável), é isso que você deve usar se precisar executar binários de 64 bits e 32 bits no mesmo SO.

    
por 06.03.2014 / 06:06
4

Estendendo a resposta do @ Mat:

Sim, alguns softwares de virtualização podem fazer isso. O principal obstáculo a ser resolvido é que, em um ambiente de 32 bits, os recursos de 64 bits da CPU não estão disponíveis e também os recursos de um kernel de 64 bits não estão disponíveis. É mesmo assim se o seu processador tiver suporte a 64-bit (desde 2003, todos eles têm).

Sua pergunta afirma implicitamente que você deseja executar o aplicativo de 64 bits em seu próprio ambiente de sistema. Se for realmente sua intenção, isso exclui todas as soluções baseadas em máquinas virtuais. O único remanescente que é conhecido por mim é a emulação do kernel do qemu. Então:

qemu-x86_64 ./your_64bit_app

Ele executa seu aplicativo em seu sistema atual, com seu kernel atual, com suas variáveis de ambiente atuais . Claro que não é muito rápido, tem que emular o seu cpu.

Ele pode emular apenas aplicativos linux x86-64.

    
por 26.04.2017 / 18:59
0

A maioria das arquiteturas de 64 bits são extensões para as de 32 bits. Eles são mais novos e completamente diferentes, então obviamente uma arquitetura de 32 bits não tem idéia do que é a contraparte de 64 bits. Eles não sabem quais são os novos recursos, quais novos registros existem ... Mesmo que eles saibam, eles não têm acesso aos novos registros e recursos. Como resultado, um kernel de 32 bits não pode salvar contextos de 64 bits. Tudo isso impossibilita a execução de aplicativos de 64 bits em um sistema de 32 bits.

Um kernel de 32 bits com reconhecimento de 64 bits cuidadosamente criado pode executar aplicativos de 64 bits , mas ainda precisa de alguns Código de 64 bits para fazer a economia de contexto, o que faz com que não seja mais um kernel puro de 32 bits.

Você pode executar um sistema operacional de 64 bits dentro de um emulador ou uma máquina virtual convidada de 64 bits dentro do host de 32 bits com VT-x. Mas tecnicamente você está executando em um sistema de 64 bits diferente. Ainda não é possível executar código de 64 bits diretamente no kernel Linux de 32 bits

    
por 03.05.2017 / 06:33