要实际运行可执行文件并让它们执行有用的操作,您需要担心API,而不仅仅是可执行文件格式.在安装了WINE的Linux计算机上,您可以从命令行运行Windows .EXE文件,它们与在Windows上执行的操作相同.
另一种方法是不可能的,但是如果你在Windows机器上安装CYGWIN,然后用CYGWIN编译器从源代码重建应用程序,你将获得一个在Windows上运行的可执行文件,并执行与Linux可执行文件相同的操作. Linux操作系统.许多标准Linux工具已经移植到CYGWIN存储库中,包括X-Windows和GIMP之类的东西.
为了正确回答您的问题,有必要检查一下ELF,COFF和PE是什么。这些二进制格式实际上只是容器,这些容器向操作系统提供有关如何执行文件中包含的原始CPU指令的指导。它们非常类似于MKV,WMV和OGG等音频/视频容器。操作系统中是否支持可执行格式。直到最近,Microsoft Windows一直未提供对COFF或ELF的任何支持。在Windows 10中,Microsoft通过内置于Windows内核UserMode-Linux兼容的系统例程中,为ELF提供了间接支持。UserMode Linux内核在Windows内核之上运行,并且几乎像独立于MS Windows一样运行所有ELF二进制格式。
Microsoft使用UserMode-Linux(子内核)以完全兼容的格式重写大多数Linux API的替代方法,他们的选择解决了另一个兼容性问题: API。“ A”代表应用程序,“ I”代表接口,但是作为接口的API主要只是一组可执行例程和环境假设。Windows内核提供对文件系统和大多数基本系统例程的访问,而UserMode Linux内核提供了其他所有功能。这样,Windows不仅可以运行ELF格式的可执行文件,而且还可以运行已经在Linux API上运行的最受欢迎的ELF可执行文件。
相反,问题的另一半,也可以在Linux上运行PE(大多数Microsoft Windows可执行文件)。有两个运行时包装库可以运行MSIL(虚拟机应用程序)和Win32(普通CPU应用程序)。由于Linux内核可扩展以识别某种字节格式,因此可以运行适当的包装程序,实际上,内核支持PE和可能更多的可执行容器格式。因此,Linux可以在Mono运行时(.NET / C#应用程序)或WINE运行时(Win32 C / C ++)中运行某些PE程序。
要安装UserMode-Linux环境,您可以按照Microsoft开发网络上提供的说明进行操作。总结一下:
请注意,此方法仅适用于Windows 10,并且仍然限于文本模式控制台和Xorg的Win32端口(如vcXsrv)用于任何图形化。Cygwin或MSYS2系统不能运行ELF二进制文件,但是可以移植和运行通常与Linux系统上的ELF二进制文件相同的应用程序。
| 归档时间: |
|
| 查看次数: |
13702 次 |
| 最近记录: |