WSL 2 真的支持 32 位程序吗?
Does WSL 2 really support 32 bit program?
我用谷歌搜索了这个问题,一些答案宣称 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://superuser.com/questions/1407730/run-32-bit-application-on-ubuntu-on-windows-subsystem-for-linux/1407818#1407818
如果你在 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 Program" 注册预览版。
立即通过 Windows Insider Program 获取 WSL2(大约 1 小时的工作):
在 Windows 中转到 设置 -> Windows Insider Program 并注册对于程序。然后去检查更新。下载需要一段时间,然后按照提示进行所有需要的重启等。
确保 "Virtual Machine Platform" 在 打开或关闭 Windows 功能时启用
- 在 CMD 或电源中shell 运行
wsl --set-default-version 2
使所有未来的 WSL 安装都使用 WSL2
- 运行
wsl --set-version <Distro> 2
将已安装的实例更改为 WSL2
- 这将花费 LONG 时间。在网上阅读可能需要几个小时后我放弃了。相反,我卸载了 Ubuntu 并重新安装了它。这花了大约 10 分钟。只要你设置默认为WSL2,重新安装就会是WSL2。
- 您可以通过 运行ning
wsl --list --verbose
验证您的 WSL 现在是版本 2
- 您的 32 位二进制文件现在应该可以工作了
我刚刚在过去一个小时内完成了所有这些工作,因为我需要 运行 我今天早上构建的 Zephyr 模拟二进制文件。成功了,我很高兴:)
来源:
我用谷歌搜索了这个问题,一些答案宣称 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://superuser.com/questions/1407730/run-32-bit-application-on-ubuntu-on-windows-subsystem-for-linux/1407818#1407818
如果你在 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 Program" 注册预览版。
立即通过 Windows Insider Program 获取 WSL2(大约 1 小时的工作):
在 Windows 中转到 设置 -> Windows Insider Program 并注册对于程序。然后去检查更新。下载需要一段时间,然后按照提示进行所有需要的重启等。
确保 "Virtual Machine Platform" 在 打开或关闭 Windows 功能时启用
- 在 CMD 或电源中shell 运行
wsl --set-default-version 2
使所有未来的 WSL 安装都使用 WSL2 - 运行
wsl --set-version <Distro> 2
将已安装的实例更改为 WSL2- 这将花费 LONG 时间。在网上阅读可能需要几个小时后我放弃了。相反,我卸载了 Ubuntu 并重新安装了它。这花了大约 10 分钟。只要你设置默认为WSL2,重新安装就会是WSL2。
- 您可以通过 运行ning
wsl --list --verbose
验证您的 WSL 现在是版本 2
- 您的 32 位二进制文件现在应该可以工作了
我刚刚在过去一个小时内完成了所有这些工作,因为我需要 运行 我今天早上构建的 Zephyr 模拟二进制文件。成功了,我很高兴:)