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

10

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

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

./64bit_app.run

(onde 64bit_app.runestá 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 é possível executar / executar / abrir arquivo binário ".

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

Gabriel
fonte
Eu não tentei isso, mas você já tentou as soluções mostradas aqui , especialmente a resposta que explica dpkg --add-architecture? Até onde eu sei, a mesma abordagem deve funcionar para 32 em 64 e para 64 em 32. Basta mudar dpkg --add-architecture i386para dpkg --add-architecture amd64.
terdon
1
você fazer tem hardware de 64 bits, certo? (só para ter certeza) #
strugee
"que se recusa a abrir"? Como exatamente?
Braiam
1
Por favor, leia as respostas para a pergunta à qual vinculei , você precisa executar sudo dpkg --add-architecture amd64primeiro. Esse é um comando separado.
terdon
1
@terdon desculpe, eu não entendi isso. A execução dessa linha resulta em: para dpkg: error: opción --add-architecture desconocidaonde é desconocidatraduzida unknown.
Gabriel

Respostas:

8

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 uma área de usuário de 32 bits em execução em um kernel de 64 bits e instalar o suporte para binários de 64 bits. A facilidade com que isso depende da distribuição. Exemplo aqui para o Debian.)

Alguns softwares de virtualização são capazes de fazer isso (com restrições sobre o 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 disponíveis no mercado tem suporte a 32 bits (por padrão ou instalável), é isso que você deve usar se precisar executar binários de 64 bits e de 32 bits no mesmo sistema operacional.

Esteira
fonte
7

Estendendo a resposta de @ 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. Mesmo assim, se sua CPU tiver suporte para 64 bits (desde 2003, todos eles possuem).

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

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, ele tem que emular sua CPU.

Ele pode emular apenas aplicativos linux x86-64.

peterh - Restabelecer Monica
fonte
Em algum lugar que eu também li, como se também o vmware pudesse fazer isso, mas isso não é informação suficiente para uma resposta. Os vmware recentes da Afaik são apenas de 64 bits no lado do host.
peterh - Restabelece Monica
1

A maioria das arquiteturas de 64 bits são extensões para as de 32 bits. Eles são mais novos e completamente diferentes, portanto, obviamente, uma arquitetura de 32 bits não tem idéia do que é a contrapartida de 64 bits. Eles não sabem quais são os novos recursos, quais são os novos registradores ... Mesmo que saibam, eles não têm acesso aos novos registradores 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 algum código de 64 bits para fazer a economia de contexto, o que o torna mais um kernel de 32 bits puro.

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

phuclv
fonte