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

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

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

비. 멀티아크를 지원하도록 데비안을 설정하세요.

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 지원도 제공합니다.

관련 정보