【问题标题】:Does WSL 2 really support 32 bit program?WSL 2 真的支持 32 位程序吗?
【发布时间】:2020-08-01 15:23:17
【问题描述】:

我用谷歌搜索了这个问题,一些答案宣称 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

【问题讨论】:

    标签: windows-subsystem-for-linux


    【解决方案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 Program”注册预览版本。

    立即通过 Windows Insider Program 获取 WSL2(大约需要 1 小时的工作时间):

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

    • 确保在打开或关闭 Windows 功能中启用“虚拟机平台”

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

    我只是在过去一个小时内完成了所有这些工作,因为我需要运行我今天早上构建的 Zephyr 模拟二进制文件。它奏效了,我很高兴:)

    来源:

    Github issue - scroll to end

    Install WSL2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2021-05-28
      • 2020-03-08
      • 2016-02-14
      • 2019-12-28
      • 2020-12-12
      相关资源
      最近更新 更多