win10/Linux子系统WSL时,解决-bash: ./xxxxxx: cannot execute binary file: Exec format error


问题背景:win10/Linux子系统WSL下运行datalab实验./btest程序时 出现Exec format error错误,可通过以下步骤解决:
问题原因:主要原因是不支持32位程序,可以用如下方法启用:WSL默认使用 64bit的程序,不支持32位的程序,可以使用QEMU来虚拟化内核来解决这个问题。
解决问题步骤:

  1. 查看Linux操作系统版本
    uname -m # -m或–machine 显示主机的硬件(CPU)架构
    x86_64
    uname -i # -i 显示硬件平台类型或unknown
    x86_64
    uname -p # -p 显示主机处理器类型或unknown
    x86_64

  2. 安装QEMU
    sudo apt update
    sudo apt install qemu-user-static
    sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'

  3. 启动服务
    sudo service binfmt-support start

  4. 启动32位架构
    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
    安装后即可执行

    后面关闭窗口后 又出现标题所示错误,重新执行步骤3的命令即可