É possível executar o executável x86 no ARM?

É possível executar o executável x86 no ARM?

Estou tentando instalar o Navicat, que é um binário x86-64, em minha máquina aarch64, o que resulta em "não é possível executar o arquivo binário: erro de formato Exec"

Aqui está o resultado da execução fileno executável:

navicatess15-sqlserver-en.AppImage: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=d629f6099d2344ad82818172add1d38c5e11bc6d, stripped

E aqui está o meu uname -a:

Linux penguin 4.19.98-08076-g24ab33fb8e14 #1 SMP PREEMPT Wed Apr 1 17:17:36 PDT 2020 aarch64 GNU/Linux

Existe alguma maneira de executar este executável na minha máquina?

(Não sei se isso faz alguma diferença, mas estou executando Linux no meu Samsung Chromebook Plus com processador OP1)

Responder1

Cada arquitetura fala sua própria linguagem de hardware, então é claro que as CPUs ARM só podem executar binários ARM nativamente. Se você deseja executar binários para outra arquitetura, você precisa usar umemulador. Os emuladores x86-64 mais famosos sãoqemuebochs

Mas a emulação é extremamente lenta, por isso não será adequada para aplicativos urgentes e deve ser o último recurso. É melhor recompilar a partir do código-fonte, se disponível, ou encontrar um software alternativo ARM

Responder2

O Debian temsuporte multiarquiteturao que significa que você pode instalar e executar programas criados para uma arquitetura em outras arquiteturas.

No entanto, você precisa levar em consideração o seguinte:

  1. Como a arquitetura x86 é muito diferente da ARM, então isso será feito através de emulação (normalmente via qemu-user) então poderá haver alguma perda de velocidade e funcionalidade.

  2. Isto precisa binfmtde apoio. Se você estiver usando "contêineres Linux" (crostinit) em um Chromebook, conforme explicado emesta postagem, esse suporte não está ativado.

  3. Em um Chromebook, binfmto suporte é necessário croutonneste momento.Funcionatão bem quanto se pode esperar nesse contexto.

Se você quiser testar isso, execute o seguinte:

a. Instale os binários necessários para suportar a arquitetura.

sudo apt-get install binfmt-support qemu-user-static
sudo update-binfmts --display

b. Configure o Debian para suportar multiarch.

sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get upgrade

c. Teste. (Supondo que você nãotenha o hellopacote instalado para a aarch64arquitetura.)

sudo apt-get install hello:amd64
hello

Isso imprimirá o familiar "Hello, World!" mensagem usando o amd64binário.

Responder3

Para aarch64, projetos comoFEXouCaixa64têm melhor desempenho do que a emulação de usuário QEMU. Eles usam recompilação dinâmica e geralmente fornecem suporte WINE para software Win32 x86/x86_64.

informação relacionada