WSL 2是否真的支持32位程序?

时间:2020-04-19 06:00:43

标签: windows-subsystem-for-linux

我已经搜索了这个问题,一些答案表明WSL 2现在支持ELF 32程序。

但是,未通过关于wsl2 Debian / Ubuntu发行版的简单测试。

这是我的考试:

// install run-time
sudo dpkg --add-architecture i386
sudo apt-get update
// install build tools
sudo apt install build-essential
sudo apt install gcc-multilib
// build
gcc helloworld.c  -m32
// run!
./a.out
bash: ./a.out: cannot execute binary file: Exec format error

引用:

https://stackoverflow.com/questions/42120938/exec-format-error-32-bit-executable-windows-subsystem-for-linux
https://superuser.com/questions/1407730/run-32-bit-application-on-ubuntu-on-windows-subsystem-for-linux/1407818#1407818

1 个答案:

答案 0 :(得分:1)

如果在WSL中运行命令uname -a,则应获得包含WSL版本的结果。这应该类似于Linux COMPUTER_NAME 4.4.0-18362-Microsoft ...。该输出中的数字18362是您的WSL版本,并且必须至少为19041才能成为WSL2版本(仅WSL2支持32位应用程序)。

您还可以在CMD Shell中运行wsl --list --verbose,您将看到WSL实例的版本为1

WSL2将成为本月晚些时候Windows更新的一部分

WSL2将于2020年5月12日作为Windows 10 2004的一部分发布。如果您不想等待,可以通过“ Windows Insider计划”注册预览版本。

立即通过Windows Insider程序获取WSL2(大约需要工作1个小时):

  • 在Windows中转到设置-> Windows Insider程序并注册该程序。然后去检查更新。下载需要一段时间,然后按照提示进行所有重新启动等操作。

  • 确保在打开或关闭Windows功能

  • 中启用了“虚拟机平台”
  • 在CMD或powershell中运行wsl --set-default-version 2,以使将来的所有WSL安装都使用WSL2
  • 运行wsl --set-version <Distro> 2将已安装的实例更改为WSL2
    • 这将花费很长的时间。在网上阅读后,我放弃了这可能要花几个小时。相反,我卸载了Ubuntu,然后重新安装了它。那花了大约10分钟。只要将默认值设置为WSL2,重新安装将是WSL2。
  • 您可以通过运行wsl --list --verbose
  • 来验证您的WSL现在是版本2。
  • 您的32位二进制文​​件现在应该可以工作

我在过去的一个小时中做了所有这一切,因为我需要运行今天早上构建的Zephyr模拟二进制文件。它奏效了,我很高兴:)

来源:

Github issue - scroll to end

Install WSL2