2017-02-08 7 views
4

Когда я пытаюсь выполнить 32-битный файл, скомпилированный с gcc -m32 main.c -o main на Подсистема Windows для Linux, я получаю следующую ошибку: bash: ./main: cannot execute binary file: Exec format error.Ошибка формата Exec 32-разрядная исполняемая подсистема Windows для Linux?

Если я скомпилирую его без-m32 он работает.

Любое решение для работает 32 бит исполняемого файла на WSL?

Спасибо.

+1

'' .c' и .s' являются файлы исходного кода. Они не могут выполняться напрямую, и они, как правило, не являются выходным сигналом программы компилятора или ассемблера. – Olaf

+0

Я знаю, я имел в виду, что я скомпилировал файл main.c и выполнил 32-разрядный исполняемый файл ./main – Ford1892

+0

Я недостаточно уверен в этом, чтобы опубликовать его как ответ, но я * верю * WSL, сам, 64 . Вы не можете запустить 32-разрядный исполняемый файл (или загрузить 32-разрядную библиотеку) в 64-разрядном режиме. –

ответ

3

32-разрядная поддержка ELF не предоставляется WSL (пока). Похоже, что не было никакого прогресса с момента создания UserVoice - вам не повезло.

См. UserVoice: Please add 32 bit ELF support to the kernel и Support for 32-bit i386 ELF binaries.

Если возможно, переключиться на реального Linux ;-)

+0

Хорошо, спасибо :) – Ford1892