-bash: ./ex1: 无法执行二进制文件: Exec 格式错误(在通过 Windows 10 应用商店安装的 Ubuntu 上,64 位)

-bash: ./ex1: 无法执行二进制文件: Exec 格式错误(在通过 Windows 10 应用商店安装的 Ubuntu 上,64 位)

我试图从一些程序集开始,但我从一开始就遇到了这个错误。以下是详细信息:我自己编写了该文件(在视频之后),因此它不重要:

    global _start
    _start:
            mov eax, 1
            mov ebx, 42
            int 0x80

非常基本。我组装并链接它(

nasm -f elf32 ex1.asm -o ex1.o 

其次是

ld -m elf_i386 ex1.o -o ex1

使用 echo $? 检查每个阶段的退出状态)。它组装和链接良好。文件给出:

ex1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped

我的处理器是 64 位 AMD Ryzen 3 2200G,我的 Win10 主机和 Ubuntu 也是 64 位(据我所知,在 64 位环境中运行 32 位二进制文​​件没问题,对吧?)。我读过很多帖子,他们要么讨论尝试在 32 上运行 64,要么讨论损坏的导入或架构不兼容(例如为 ARM 组装)或更复杂的问题。这非常简单,无论出于何种意图和目的,它都应该简单地运行。但是当我尝试时我得到

-bash: ./ex1: cannot execute binary file: Exec format error

这是通过 Windows 10 应用商店安装的 Ubuntu,64 位。

有什么建议么?

答案1

正如评论中已经指出的,在 Windows Linux 子系统 (WSL) 上运行的 Ubuntu 中上述 nasm 汇编问题的答案是升级到 WSL2。对于遇到该问题的任何人,请注意:

  • 如果您的 Windows 10 版本早于 2004 年,您需要先进行更新。
  • 您的 Windows 和 WSL 更新需要以管理员身份完成。

我在玩游戏时使用了很多链接 - 无法记住所有链接。然而我最近遇到了:

https://www.youtube.com/watch?v=loC7VfgRT-I

人们可能会找到有用的起点

相关内容