有没有办法制作一个适用于Mac/Windows的双重可执行文件?

4
我正在寻找一种制作Windows/Mac双重可执行文件的方法。也就是说,我可以在任何一个操作系统中执行该文件,并且它将运行我所需的某些代码。这个代码可以是脚本或(最好是)本地编译的代码,但它需要在原始操作系统上运行,而不需要安装任何额外的工具或库。另一个要求是它需要是单个文件。
有人知道如何做到这一点吗?或者这可能吗?
8个回答

10

我唯一能想到这可以实现的方法是安装额外的工具:

  • 脚本:Mac和Windows的命令解析器非常不同(Mac是bash shell,而Windows有两个:PowerShell和原始的,不知道其技术名称)。您必须在Windows计算机上安装类似于Services for Unix/Cygwin/Insert-other-UNIXy-Environment的东西,或者使用perl或其他脚本语言。无论哪种情况,至少需要在Windows计算机上添加额外的工具,可能还需要在Mac上添加。
  • 可执行文件:你唯一可以做到的是使用Java、.NET/Mono或其他跨平台的基于字节码的虚拟机环境。因此,您仍然依赖于不在系统内置的工具。(如果我没记错,Java不随Windows一起发布,Mono不随Mac一起发布。)
  • 其他问题:在处理了工具依赖关系之后,你将遇到的最大问题是两个系统识别路径的方式不同。理解Mac路径通常是Unix样式的路径(尽管我认为“老派”的Mac用冒号分隔的路径仍然有效)。你还需要处理基于两个环境的不同文件位置和默认位置。这会很麻烦。

现在,如果你可以使用交叉编译而不是二进制兼容性,那么你可能会在一个称为RealBasic的工具中找到答案。它最初是基于Mac的,但现在也有Windows和Linux版本。我在本世纪前十年曾经尝试过它,感觉很棒,但我从未在专业方面使用过。只要你小心,这将允许您编写一次代码,并将完全相同的代码编译为本机Mac、Linux和Windows应用程序。


Windows有两个shell,一个是旧的cmd shell(可能有其他名称),对任何人来说都没有太多用处;另一个是非常好的Powershell (-: 另外,还可以在Windows下单独运行vbscript或jscript而不需要通过命令行shell。然而,这些对于解决问题来说仍然没有太大帮助! - Murph

1
在脚本中一切都很好,但在编译代码中将会变得不可能,因为Windows可执行文件(exe)与Mac可执行文件(bin)不同,而Linux可执行文件则各有不同。

1
只要您使用跨平台语言,如Java,就可以在任何操作系统上运行它。但本地代码将无法执行。

Java并非所有平台的默认安装程序。 - Adrien Plisson
真的吗,但这为什么是个问题呢?安装它相当简单,并且很常见,因此这是一个合理的要求。尽管如此,我重新阅读了问题,发现OP正在寻找一些原生于基本操作系统的东西,而Java并不符合这个要求。 - Kyle Trauberman

1

这两者之间没有任何相似之处。没有任何语言的程序或脚本能够在两台机器上完全相同地运行,除非有其他要求,例如Windows下的bash解释器。


1

在 Mac 上可以安装 Mono 或 Java 并运行设计为跨平台的程序。如果没有这种支持多个平台的特殊库,就没有共同点,也无法在两者上运行相同的应用程序。


1

也许不完全符合您的要求,但可能值得注意的是:

您可以使用Cocotron编译使用Cocoa编写的Obj-C程序,以在Windows上运行。效果非常好!这样做不会为Mac和Windows提供一个可执行文件,而是分别为Mac和Windows提供一个。


0
你可能想要查看Realbasic。它是一个带有IDE的VB克隆语言。它可以构建Windows、Mac和Linux的可执行文件。realbasic.com

0
你可以考虑查看与Tcl/Tk配合使用的StarKits。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接