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 file
no 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:
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.Isto precisa
binfmt
de apoio. Se você estiver usando "contêineres Linux" (crostinit) em um Chromebook, conforme explicado emesta postagem, esse suporte não está ativado.Em um Chromebook,
binfmt
o suporte é necessáriocrouton
neste 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ãojátenha o hello
pacote instalado para a aarch64
arquitetura.)
sudo apt-get install hello:amd64
hello
Isso imprimirá o familiar "Hello, World!" mensagem usando o amd64
binário.