主要原因是不支持32位程序,可以用如下方法启用:WSL默认使用 64bit的程序,不支持32位的程序,但我们可以使用QEMU来虚拟化内核。
1. 查看Linux操作系统版本
## 方法1. uname查看系统信息,uname就是UNIXname的缩写
uname -s # -s或–sysname 显示linux内核名称
Linux
uname -r # -r或–release 显示linux操作系统内核版本号
4.4.0-18362-Microsoft
uname -v # -v 获取更详细的内核版本信息(译注:不是版本号,是指该内核建立的时间和CPU架构等)
#1-Microsoft Mon Mar 18 12:02:00 PST 2019
uname -n # -n或-nodename 显示主机在网络节点上的名称或主机名称
BF-2020060xxxxx
uname -m # -m或–machine 显示主机的硬件(CPU)架构
x86_64
uname -i # -i 显示硬件平台类型或unknown
x86_64
uname -p # -p 显示主机处理器类型或unknown
x86_64
uname -o # -o 显示操作系统名称
GNU/Linux
uname -a # -a或–all 显示系统详细信息:依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
Linux BF-2020060xxxxx 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux
## 方法2. 查看方式
file /bin/ls
# 根据输出信息确认此Linux版本为64位
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=2f15ad836be3339dec0e2e6a3c637e08e48aacbd, for GNU/Linux 3.2.0, stripped
此linux版本为64位。(64-bit)
2. 按照常规方式:原生 Ubuntu 添加 32bit 运行环境
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386
sudo apt-get install lib32ncurses5 lib32ncurses5-dev
sudo apt-get install lib32z1
注:并没有解决问题。报错同样是 Exec format error
3. 安装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'
4. 启动服务:注意每次调试32位程序之前都要启用一次
sudo service binfmt-support start
5. 启动32位架构
sudo dpkg --add-architecture i386
sudo apt update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
网友评论