Возможно ли запустить исполняемый файл x86 на ARM?

Возможно ли запустить исполняемый файл x86 на ARM?

Я пытаюсь установить Navicat, который является двоичным файлом x86-64, на мою машину aarch64, что приводит к ошибке «невозможно выполнить двоичный файл: ошибка формата Exec».

Вот результат запуска fileисполняемого файла:

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

А вот и мой uname -a:

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

Есть ли способ запустить этот исполняемый файл на моем компьютере?

(Не знаю, имеет ли это какое-либо значение, но я использую Linux на своем Samsung Chromebook Plus с процессором OP1)

решение1

Each architecture speaks its own hardware language so of course ARM CPUs can only run ARM binaries natively. If you want to run binaries for another architecture you need to use an эмулятор. Наиболее известные эмуляторы x86-64 — этоqemuибохс

Но эмуляция очень медленная, поэтому она не подойдет для приложений, чувствительных ко времени, и должна быть последним средством. Лучше перекомпилировать из исходников, если они доступны, или найти альтернативное программное обеспечение ARM

решение2

У Debian естьподдержка мультиархитектурыЭто означает, что вы можете устанавливать и запускать программы, созданные для одной архитектуры, на других архитектурах.

Однако, вам необходимо принять во внимание следующее:

  1. Поскольку архитектура x86 сильно отличается от ARM, то это будет сделано посредством эмуляции (обычно с помощью qemu-user), поэтому возможна некоторая потеря скорости и функциональности.

  2. Это требует binfmtподдержки. Если вы используете "контейнеры Linux" (crostinit) на Chromebook, то, как описано вэта почта, эта поддержка не включена.

  3. На Chromebook на данном этапе binfmtтребуется поддержка .croutonОно работаета также можно ожидать в этом контексте.

Если вы хотите протестировать это, выполните следующее:

а. Установите двоичные файлы, необходимые для поддержки архитектуры.

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

б) Настройте Debian для поддержки мультиархитектуры.

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

c. Проверьте это. (Предполагая, что вы неуже(Установите пакет helloдля этой aarch64архитектуры.)

sudo apt-get install hello:amd64
hello

Это напечатает знакомое сообщение «Hello, World!» с использованием amd64двоичного файла.

решение3

Для aarch64 такие проекты какФЕКСилиЯщик64имеют лучшую производительность, чем эмуляция пользователя QEMU. Они используют динамическую перекомпиляцию, также обычно предоставляют поддержку WINE для программного обеспечения Win32 x86/x86_64.

Связанный контент