教程:使你的 ARM Linux系统(Aarch64)兼容Win32软件(通过Wine i386)(1)
Hangover wine升级版
区别
{
先介绍一点背景:
- Linux 的系统调用接口是稳定的,用户态 ABI 是不稳定的。
- QEMU 具有模拟器的功能,可以模拟多种架构。
- QEMU 在 Linux 上有一个功能,userland 模拟,可以加载其他架构的程序,并把系统调用转发到原生架构。
- Windows 的系统调用接口是不稳定的,Win32 层面则是稳定的。
- Wine 的实现方式是把 Win32 API 调用转发到原生库。
于是很自然地有两种方案:
一是以 Linux 系统调用为分界线,通过 qemu-x86_64 运行 x86-64 的 Wine。这种方式兼容性和 x86-64 Linux + Wine 是一样的,但运行速度慢,因为 QEMU 要翻译的东西太多了。
二是以 Win32 API 为分界线,直接把 Win32 API 调用转发给原生库,这就是 Hangover 方案,和 Windows ARM64 的方案类似。兼容性不怎么样。性能虽然比上面的好,但是和 Windows 的差距仍然很明显(QEMU 本身是个通用的模拟器,没有为 x86-64 -> AArch64 特别优化;并且主导 QEMU 开发的红帽对用户态模拟不太感兴趣)。
作者:知乎用户 链接:https://www.zhihu.com/question/477200486/answer/2044089077 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
}
教程:使你的 ARM Linux系统(Aarch64)兼容Win32软件(通过Hangover)(4) - 知乎
|