WSL2 Ubuntu中NASM生成的32位可执行文件无法运行怎么解决
问题产生原因
- 核心原因:WSL2 上的64位Ubuntu系统默认缺少32位程序运行兼容支持。你通过
nasm -f elf32和ld -m elf_i386生成的是32位x86架构的ELF可执行文件,原生64位环境没有对应依赖时无法识别该执行格式,就会抛出该错误。 - 次要排查点:你链接生成的可执行文件名为
file,但报错信息显示尝试执行的是./asm01,如果存在文件名输入不匹配的问题,也会触发执行异常,可先核对目标执行文件名是否正确。
解决办法
- 先核对文件名与编译参数的对应关系:如果要生成名为
asm01的可执行文件,将ld链接命令的输出参数修改为-o asm01,执行时对应输入./asm01即可。 - 安装32位兼容运行依赖,在WSL2 Ubuntu终端依次执行以下命令:
sudo dpkg --add-architecture i386 sudo apt update sudo apt install libc6:i386 lib32gcc-s1
- 依赖安装完成后重新汇编、链接代码,即可正常运行:
nasm -f elf32 file.asm ld -m elf_i386 -o file file.o ./file
如果执行后仍有异常,可通过file file命令查看生成的可执行文件格式,正常输出应为file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped,确认格式无误后再排查其他问题。
内容的提问来源于stack exchange,提问作者Yas
相关产品推荐
相关产品推荐

