Estoy intentando instalar Navicat, que es un binario x86-64 en mi máquina aarch64, lo que da como resultado "no se puede ejecutar el archivo binario: error de formato Exec".
Aquí está el resultado de ejecutar file
el ejecutable:
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
Y aquí está mi uname -a
:
Linux penguin 4.19.98-08076-g24ab33fb8e14 #1 SMP PREEMPT Wed Apr 1 17:17:36 PDT 2020 aarch64 GNU/Linux
¿Hay alguna forma de ejecutar este ejecutable en mi máquina?
(No sé si esto hace alguna diferencia, pero estoy ejecutando Linux en mi Samsung Chromebook Plus con un procesador OP1)
Respuesta1
Cada arquitectura habla su propio lenguaje de hardware, por lo que, por supuesto, las CPU ARM solo pueden ejecutar archivos binarios ARM de forma nativa. Si desea ejecutar binarios para otra arquitectura, necesita usar unemulador. Los emuladores x86-64 más famosos sonqemuybochs
Pero la emulación es extremadamente lenta, por lo que no será adecuada para aplicaciones urgentes y debería ser el último recurso. Será mejor que vuelvas a compilar desde la fuente, si está disponible, o busques un software alternativo a ARM
Respuesta2
Debian tienesoporte multiarcalo que significa que puede instalar y ejecutar programas creados para una arquitectura en otras arquitecturas.
Sin embargo, debes tener en cuenta lo siguiente:
Como la arquitectura x86 es muy diferente de ARM, esto se hará mediante emulación (normalmente a través de
qemu-user
), por lo que podría haber cierta pérdida de velocidad y funcionalidad.Esto necesita
binfmt
apoyo. Si está utilizando "contenedores de Linux" (crostinit) en un Chromebook, como se explica enesta publicación, este soporte no está habilitado.En un Chromebook,
binfmt
se requiere soportecrouton
en este punto.Funcionatan bien como se puede esperar en ese contexto.
Si desea probar esto, ejecute lo siguiente:
a. Instale los binarios necesarios para admitir la arquitectura.
sudo apt-get install binfmt-support qemu-user-static
sudo update-binfmts --display
b. Configure Debian para que admita multiarca.
sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get upgrade
C. Pruébalo. (Suponiendo que noyatener el hello
paquete instalado para la aarch64
arquitectura.)
sudo apt-get install hello:amd64
hello
Esto imprimirá el familiar "¡Hola, mundo!" mensaje usando el amd64
binario.