Linux上的COFF或Windows上的ELF

是否可以在UNIX上运行COFF可执行文件或在Windows上运行ELF可执行文件? 在Windows和UNIX上运行两种文件types的步骤是什么? 我只是好奇。

Solutions Collecting From Web of "Linux上的COFF或Windows上的ELF"

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

反过来,如果你在Windows机器上安装CYGWIN,然后用CYGWIN编译器从源代码重建应用程序,你将得到一个在Windows上运行的可执行文件,并执行与Linux可执行文件相同的操作Linux操作系统。 很多标准的Linux工具已经移植到CYGWIN库中,包括X-Windows和GIMP等。

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

编辑: http : //atratus.org/似乎也是这样做,而不需要有Interix / SFU。

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

另一种方式是微软以完全兼容的格式重写整个Linux内核组件,他们选择的方法是最流畅和最有效的,它解决了另一个兼容性问题:API。 “A”表示应用程序,Interface表示“I”,然而API作为接口主要是一组可执行程序和环境假设。 Windows内核提供对文件系统和大部分基本系统例程的访问,而UserMode Linux内核提供其他所有内容。 这样,Windows不仅可以运行ELF格式的可执行文件,还可以运行已经在Linux API上运行的最常用的ELF可执行文件。

对不起,如果看起来不足够,但是为了使ELF可执行文件像您似乎建议的那样自由运行,最接近的方法是使用Microsoft提供的UserMode Linux,并且任何这样的可执行文件应该已经从提供的环境确保存在正确的图书馆。 要安装此环境,您必须遵守Microsoft开发网络上提供的说明。 总结:

  1. 打开开发者模式:设置| 更新和安全| 对于开发人员| 检查开发者模式单选按钮
  2. 从开始菜单中,打开“打开或关闭Windows功能”
  3. 向下滚动,并检查“Windows子系统的Linux(测试版)”功能
  4. 打好吧,重新启动(所需的步骤)
  5. 一旦重新启动,打开一个PowerShell /命令提示符并运行“Bash”,并按照简单的提示接受Canonical的许可证,并开始下载Ubuntu镜像
  6. 下载完成后,您可以从“开始”菜单启动“Windows上的Ubuntu Bash”

请注意,此方法仅适用于Windows 10,可能仍然有限。 我自己从来没有用过这个方法,因为它的早期开发状态,所以需要注意的是,首先,我不确定内核是否真的识别出一个ELF可执行文件自动在Linux内核中运行它, ,您可以考虑使用Cygwin或Msys系统,它们不能运行ELF二进制文件,但可以运行与通常作为ELF二进制文件交付的应用程序相同的应用程序,并且具有可用的开发状态。

COFF最初是由UNIX引入的(围绕System V或其附近),所以有些UNIX可能仍然支持COFF格式。 Linux已经被至少一段时间弃用了,大概其他大多数的Unices也被弃用或彻底放弃了支持。

Windows ELF支持稍微有点儿 – 几乎肯定没有一些深层次的技巧。 你应该更具体地说明你要在这里做什么