首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux上的COFF或Windows上的ELF

Linux上的COFF或Windows上的ELF
EN

Stack Overflow用户
提问于 2009-12-12 15:31:42
回答 4查看 17.3K关注 0票数 16

是否可以在UNIX上运行COFF可执行文件,或者在Windows上运行ELF可执行文件?要在Windows和UNIX上运行任何一种文件类型,需要执行哪些步骤。我只是好奇。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-16 01:16:25

要真正运行可执行文件并让它们做有用的事情,您需要担心API,而不仅仅是可执行文件的格式。在安装了WINE的Linux机器上,您可以从命令行运行Windows .EXE文件,它们可以执行与Windows相同的操作。

但是,如果您在Windows计算机上安装CYGWIN,然后使用CYGWIN编译器从源代码重新构建应用程序,您将获得一个在Windows上运行的可执行文件,并执行与Linux上的Linux可执行文件相同的操作。许多标准的Linux工具已经被移植到CYGWIN存储库中,包括X-Windows和GIMP。

票数 9
EN

Stack Overflow用户

发布于 2016-08-03 10:17:37

要正确回答您的问题,有必要回顾一下ELF、COFF和PE是什么。这些二进制格式本质上只是一些容器,它们指示操作系统如何执行文件中包含的原始CPU指令。它们非常像MKV、WMV和OGG这样的音频/视频容器。操作系统是否支持可执行文件格式。直到最近,Microsoft Windows一直没有提供对COFF或ELF的任何支持。在Windows 10中,Microsoft通过内置Windows内核UserMode-Linux兼容的系统例程为ELF提供了间接支持。ELF内核运行在UserMode内核之上,运行所有ELF二进制格式,就好像它独立于MS Windows运行一样。

使用UserMode-Linux (子内核)的替代方案是让Microsoft以完全兼容的格式重写大部分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's Development Network上提供的说明进行操作。总结一下:

  1. 打开开发者模式:设置|更新和安全|开发者|从开始菜单中选择开发者模式单选按钮
  2. ,打开“打开或关闭视窗功能”
  3. 向下滚动,勾选“Windows Subsystem for Linux (Beta)”功能,
  4. 点击正常并重新启动(必要步骤)
  5. 重新启动后,打开PowerShell/命令提示符,运行“Bash”,然后按照简单提示接受Canonical的许可并开始下载Ubuntu镜像
  6. 下载完成后,你可以从start menu

启动“Bash on Ubuntu on Windows

请注意,此方法仅适用于Windows10,并且仍然限于文本模式控制台和Xorg的Win32端口,如vcXsrv。Cygwin或MSYS2系统不能运行ELF二进制文件,但可以移植和运行与Linux系统上的ELF二进制文件相同的应用程序。

票数 10
EN

Stack Overflow用户

发布于 2011-04-15 16:54:29

http://lbw.sourceforge.net/比line工作得更好。low是另一个做同样事情的项目,但那是工作较少的项目。

编辑:http://atratus.org/似乎也做了同样的事情,不需要有Interix/SFU。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1892677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档