Ubuntu Docker イメージを使用して、arm64 M1 Mac Mini に x86-64 環境をセットアップしました。GCC AArch64 クロス コンパイラやユーザー モード QEMU などの関連ソフトウェアをインストールしました。
SPARC-64 エミュレーションが失敗することを除けば、このセットアップが Linux 用の Windows サブシステム (Ubuntu ディストリビューションも) で機能することはわかっています。しかし、Docker を使用して M1 Mac でこれを行うと、QEMU は次のように報告します。
mmap stack: Cannot allocate memory
プログラムのソースコードは次のとおりです。
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}
コマンドでコンパイルしたもの:
aarch64-linux-gnu-gcc \
-Xlinker -dynamic-linker \
/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 \
hello-world.c -o hello-world
そして、以下で実行:
qemu-aarch64 ./hello-world