У меня есть довольно простое приложение, которое было скомпилировано с флагами g++ -m32 .

К сожалению, когда я пытаюсь запустить его, я получаю сообщение об ошибке:

bash: ./a.out: cannot execute binary file: Exec format error

Если скомпилировано без -m32 ошибки не возникает, и она работает, как ожидается

В чем может быть проблема и возможно ли ее решить?

РЕДАКТИРОВАТЬ:

  1. Компиляция с g++ -m32 --static не решает проблему.
  2. Программа установки является подсистемой Ubuntu в Windows 10.

1 ответ1

3

Вы просто не можете этого сделать. WSL не поддерживает 32-битные приложения!

Большинство (если не все) процессоры Intel и AMD в последнее десятилетие поддерживают набор инструкций x86_64, и у Microsoft нет причин тратить время и деньги на поддержку 32-битной версии Linux. Большинство разработчиков и пользователей Ubuntu в любом случае используют 64-битную версию

Нет, в настоящее время мы не поддерживаем 32-разрядную версию x86: в настоящее время мы зависим от инструкций и механизмов только для x64, чтобы обеспечить быструю и стабильную производительность.

Bash на Ubuntu для Windows

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .