葡萄酒和单声道之间的区别

Modified on: Sat, 09 Jun 2018 13:29:23 +0800

据我所知,Wine和Mono都用于在Ubuntu下运行Windows应用程序。

所以我想知道

  1. 他们的不同之处是什么?它们都是虚拟机吗?或者每个属于其他类别?
  2. 什么时候使用哪种Windows应用程序更好?例如,那些可能需要或可能不需要.net Framework的应用程序。
  3. 他们互相依赖吗?是
    他们需要一起安装吗?
    或者每个人都独立工作
    没有另一个存在?
  4. 醇>

    谢谢和问候!

作者:,Tim

最佳答案

成功运行程序需要三件事情匹配:

  • CPU指令集(例如,您的电脑中的x86,移动电话中ARMPowerPC in一些Apple Mac,用于Java Applet的Java字节码,用于“.Net”/ Mono应用程序的CLI
  • 二进制文件格式(例如,对于Microsoft Windows,PE / COFF“。exe”,对于Java Applet .jarPE32“。exe”,ELF在Unix / Linux上)
  • 应用程序编程接口; (例如,Linux / Unix上的POSIX,适用于Mac OSX的Cocoa,Microsoft Windows上的Win32基类库 “.Net”/ Mono应用程序)。

通过使用模拟器/解释器(用于其他CPU指令集),通过使用额外的文件加载器(用于外部文件格式),以及提供更多API的其他编程库,可以增加匹配所有三个的机会。

另请注意,某些处理器可以本机执行多个指令集; PC经常有x86amd64指令集; ARM处理器可以执行四个:ARM32 / Thumb / Java字节码/ ThumbEE。某些操作系统本身也可以提供多个API(Microsoft Windows提供Win32POSIX)。

对于其他一切,您需要额外的软件。对于运行Java程序,您需要上面列出的三个部分才能使其工作:一个Java虚拟机程序运行字节码;一种启动Java程序的方法,以及一个用于程序调用的Java Classlibrary。 “Java”是Sun最初开发的几种独立技术的品牌名称,但对于用户而言,它们通常作为一种技术下载。

同样适用于“.Net”,它是最初由Microsoft开发的几种不同技术的营销品牌名称:公共语言运行时/基类库(CLR)是API; VES是加载程序,公共语言接口(CLI)是指令集。

您不必从Microsoft,Sun或Intel那样下载这些技术,因为他们最初发明了一些东西。 AMD使处理器与英特尔的标准兼容; Apache(“Harmony”)和Google(“Android Dalvik”)都是类似Java的套件;和Mono提供CLR / CLI / VES套件。重要的是每个人都使用相同的标准,使它们兼容。 DVD光盘可以在符合标准的任何DVD播放器上播放,HTML网页将在符合HTML标准的任何Web浏览器中呈现。

  • Mono是一个可以在Mac OSX,MS Windows和Linux上运行的CLR / CLI / VES套件。
  • Wine是一个可以在Mac OSX,MS Windows和Linux上运行的Win32 API实现。
  • 您可以在任何操作系统的基础上在Wine之上运行Mono
  • 您可以在任何CPU架构之上,在Qemu之上运行Wine

所以Mono会运行CLR .exe应用程序,Wine会运行Win32 .exe应用程序。唯一的共同点是文件名以“.exe”结尾;内容完全不同且不兼容,因此您需要正确一个。

就像Python解释器在出现Perl时会出错(反之亦然),当使用x86 + Win32或JVM + Java字节码时,CLR解释器会出错。如果你可以发布你想要运行的特定程序的链接,我自己或其他人应该能够告诉你它所针对的确切指令集,文件格式和API,以及你需要在Linux上安装什么运行它。希望有所帮助!

(有时您甚至可能需要两者。例如,Openbve列车模拟器是C#并编译为PE / COFF + CLI + CLR,但可以选择使用C二进制插件编译为PE / COFF + Win32 + x86。在这种情况下,你需要在Wine下使用Win32版本的Mono。如果CPU架构也是如此,需要模拟的不同;所以在Qemu下的Wine下的Mono。)

作者:Lucio,sladen

相关问答

添加新评论