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

Debianはマルチアーキテクチャのサポートこれは、あるアーキテクチャ用に構築されたプログラムを別のアーキテクチャにインストールして実行できることを意味します。

しかし、、次の要素を考慮する必要があります。

  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。複数のアーキテクチャをサポートするようにDebianを設定します。

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サポートを提供します。

関連情報