Я пытаюсь установить 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 естьподдержка мультиархитектурыЭто означает, что вы можете устанавливать и запускать программы, созданные для одной архитектуры, на других архитектурах.
Однако, вам необходимо принять во внимание следующее:
Поскольку архитектура x86 сильно отличается от ARM, то это будет сделано посредством эмуляции (обычно с помощью
qemu-user
), поэтому возможна некоторая потеря скорости и функциональности.Это требует
binfmt
поддержки. Если вы используете "контейнеры Linux" (crostinit) на Chromebook, то, как описано вэта почта, эта поддержка не включена.На 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
двоичного файла.