qemu-пользовательские отчеты «стек mmap: Не удается выделить память» в Docker

#macos #docker #arm #qemu #usermode

Вопрос:

Я только что настроил среду x86-64 на arm64 M1 Mac Mini с помощью образа Ubuntu Docker. Я установил соответствующее программное обеспечение, такое как кросс-компилятор GCC AArch64 и QEMU в пользовательском режиме.

Я знаю, что эта настройка работает в подсистеме Windows для Linux (также дистрибутив Ubuntu), за исключением того, что эмуляция SPARC-64 не работает. Но когда вы делаете это на Mac с помощью Docker, 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