You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL 2是否真的支持32位程序?实测遇执行格式错误

解决WSL2 Debian/Ubuntu下32位ELF程序无法运行的Exec format error问题

我之前也踩过这个一模一样的坑!明明按步骤装了32位运行时和编译工具,运行编译出来的程序却一直报错,折腾了半天才搞明白问题出在哪。

问题根源

虽然有些资料说WSL2支持32位ELF程序,但默认情况下WSL2的内核并没有加载i386架构的兼容模块——就算你装了32位的用户态库,内核识别不了32位二进制格式,自然就会抛出Exec format error。另外这个特性需要WSL2内核版本在5.15及以上,先确认下你的内核版本:

uname -r

如果版本低于5.15,先在Windows终端里升级WSL:

wsl --update

解决步骤

  1. 补全32位运行时依赖
    你之前已经加了i386架构,但还需要安装核心的32位系统库:
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
  1. 配置WSL2自动加载兼容模块
    创建或编辑WSL发行版内的/etc/wsl.conf文件:
sudo nano /etc/wsl.conf

添加以下内容,让WSL每次启动时自动加载必要模块:

[boot]
command = modprobe binfmt_misc && modprobe i386

保存退出后,在Windows终端里重启WSL:

wsl --shutdown

之后重新打开你的WSL发行版。

  1. 重新编译运行程序
    现在再编译32位程序:
gcc helloworld.c -m32

运行./a.out应该就能正常输出内容了!

额外测试方案

如果配置后还是不行,可以手动加载模块测试:

sudo modprobe binfmt_misc
sudo modprobe i386

然后直接运行程序,要是能成功,说明是wsl.conf的配置没生效,检查下拼写有没有错误。

内容的提问来源于stack exchange,提问作者PaleNeutron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:42:33