¿Es posible ejecutar un ejecutable x86 en ARM?

¿Es posible ejecutar un ejecutable x86 en ARM?

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 fileel 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:

  1. 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.

  2. Esto necesita binfmtapoyo. Si está utilizando "contenedores de Linux" (crostinit) en un Chromebook, como se explica enesta publicación, este soporte no está habilitado.

  3. En un Chromebook, binfmtse requiere soporte croutonen 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 hellopaquete instalado para la aarch64arquitectura.)

sudo apt-get install hello:amd64
hello

Esto imprimirá el familiar "¡Hola, mundo!" mensaje usando el amd64binario.

Respuesta3

Para aarch64, proyectos comoFEXoCaja64tiene mejor rendimiento que la emulación de usuario QEMU. Usan recompilación dinámica y generalmente también brindan soporte WINE para el software Win32 x86/x86_64.

información relacionada