Windows的WSL上的ubuntu运行32位i386程序的方法

在windows上的WSL上运行ubuntu linux的体验还是不错的,大部分的编译程序方面的开发工作都可以正常进行。不过要运行32位的i386程序的话,WSL缺省安装的ubuntu linux是不可以的,虽然原生安装的ubuntu linux是自然就支持32位的i386程序的。这里应该是windows支持的Linux的系统对32位程序运行的不能直接支持的问题导致的。

那有什么办法可以绕过这个系统支持的问题呢?答案是使用强大的qemu,使用qemu来在64位的Linux系统上模拟运行32位的i386程序。在这里记录一下具体的使用qemu解决这个问题的方法,作为备忘。

首先,安装qemu-user-static,用来模拟运行32位的i386可执行程序。具体方法如下:

sudo apt install qemu-user-static

然后,在系统的binfmt support的服务中增加i386可执行程序文件格式的支持,使得系统可以直接加载i386可执行程序文件格式并运行(实际上是调用qemu-i386-static来运行),这样,就可以不需要修改很多32位的软件包的编译配置文件,直接运行这些软件包的原始的build脚本就可以了。

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'
sudo service binfmt-support start

其中binfmt-support这个服务每次使用的时候都要运行,所以可以把命令“sudo service binfmt-support start”加到.bashrc文件中,这样打开终端自动就支持i386的可执行程序文件了。

然后,再按原生ubuntu系统支持i386程序的方式来做就可以了。首先,在系统中增加i386这个cpu架构的支持,然后安装i386程序运行需要依赖的软件包,具体命令如下:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 zlib1g-dev:i386

现在,我们就可以在WSL的ubunt linux上正常运行32位的i386程序了。

转自:
https://zhuanlan.zhihu.com/p/615401047?utm_id=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值