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

x86汇编编译的32位程序在WSL1 Kali环境运行Exec format错误如何解决?

问题原因

你的汇编代码本身不存在语法或逻辑错误,报错的根本原因是你当前使用的WSL1环境不支持运行32位ELF可执行文件。
WSL1的底层实现是Windows内核提供的Linux系统调用兼容层,并非完整的Linux内核虚拟化,因此缺失了32位程序的加载、运行支持,即便宿主x86_64硬件本身支持32位指令集,也无法正常运行32位编译的程序。

解决方案

有两种可选用的解决方式:

方案1:将Kali发行版从WSL1升级为WSL2(推荐,可兼容32位程序运行需求)

操作步骤:

  • 打开Windows端具有管理员权限的PowerShell终端
  • 执行转换命令:wsl --set-version kali-linux 2
  • 等待数分钟完成磁盘镜像转换,重启WSL环境后即可正常运行你编译的32位hello程序

方案2:编译64位版本的汇编程序,可直接在WSL1环境运行

修改汇编代码为x86_64架构适配版本,代码如下:

section .text
   global _start

_start:
   mov  rax, 1
   mov  rdi, 1
   mov  rsi, msg
   mov  rdx, len
   syscall

   mov  rax, 60
   mov  rdi, 0
   syscall

section .data
msg db 'Hello, world!', 0xa
len equ $ - msg

执行对应编译、链接命令:

nasm -f elf64 hello.asm -o hello.o
ld hello.o -o hello

运行./hello即可正常输出Hello World内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:03