ARM에서 x86 실행 파일을 실행할 수 있습니까?

ARM에서 x86 실행 파일을 실행할 수 있습니까?

내 aarch64 컴퓨터에 Navicat(x86-64 바이너리)를 설치하려고 하는데 "바이너리를 실행할 수 없습니다: 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

내 컴퓨터에서 이 실행 파일을 실행할 수 있는 방법이 있나요?

(이게 어떤 차이가 있는지는 모르겠지만 OP1 프로세서가 장착된 Samsung Chromebook Plus에서 Linux를 실행하고 있습니다.)

답변1

각 아키텍처는 자체 하드웨어 언어를 사용하므로 물론 ARM CPU는 기본적으로 ARM 바이너리만 실행할 수 있습니다. 다른 아키텍처에 대해 바이너리를 실행하려면 다음을 사용해야 합니다.에뮬레이터. 가장 유명한 x86-64 에뮬레이터는 다음과 같습니다.게임그리고상자

그러나 시뮬레이션은 매우 느리기 때문에 시간에 민감한 응용 프로그램에는 적합하지 않으며 최후의 수단이 되어야 합니다. 가능한 경우 소스에서 다시 컴파일하거나 ARM 대안을 찾는 것이 좋습니다.

답변2

데비안은다중 아키텍처 지원이는 한 아키텍처용으로 구축된 프로그램을 다른 아키텍처에 설치하고 실행할 수 있음을 의미합니다.

하지만, 다음 요소를 고려해야 합니다.

  1. x86 아키텍처는 ARM과 매우 다르기 때문에 이는 qemu-user에뮬레이션(일반적으로 에뮬레이션을 통해)을 통해 수행되므로 일부 속도와 기능이 손실될 수 있습니다.

  2. 이를 위해서는 binfmt지원이 필요합니다. 다음에 설명된 대로 Chromebook에서 Linux 컨테이너(crostinit)를 사용하는 경우이 게시물, 이 지원은 활성화되지 않습니다.

  3. Chromebook에서는 binfmt현재 지원이 필요합니다.crouton효과가있다그리고 이와 관련하여 무엇을 기대할 수 있는지.

이를 테스트하려면 다음 명령을 실행하십시오.

ㅏ. 아키텍처를 지원하는 데 필요한 바이너리를 설치합니다.

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

b. 여러 아키텍처를 지원하도록 데비안을 설정합니다.

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

씨. 시험을 봐요. (그렇지 않다고 가정하면이미hello해당 아키텍처에 대한 패키지가 이미 aarch64설치되어 있습니다. )

sudo apt-get install hello:amd64
hello

그러면 바이너리를 사용하여 익숙한 "Hello, World!" amd64메시지가 인쇄됩니다.

답변3

aarch64의 경우 프로젝트는 다음과 같습니다.고치다또는상자 64QEMU 사용자 에뮬레이션보다 성능이 뛰어납니다. 동적 재컴파일을 사용하고 종종 Win32 x86/x86_64 소프트웨어에 대한 WINE 지원을 제공합니다.

관련 정보