在 Linux 上运行 Mac OS X 应用程序

0x0*_*584 16 linux macintosh application

根据这篇维基百科文章

OS X 是由 Apple Inc. 开发和销售的一系列基于Unix 的图形界面操作系统。

所以我在想:

  • 是否有与Wine类似但运行 Mac 应用程序的应用程序?

  • 是否可以Linux机器上运行 Mac OS X 应用程序?

Wya*_*ard 19

Darling (链接) 是一个旨在变得类似于葡萄酒的项目。不过,目前它只运行一些命令行 OSX 程序。截至 2019 年年中,它可以运行许多命令行程序,根据他们的主页,它似乎也接近可以运行一些基本图形软件的地步。它可能不会运行你想要的东西,除非它是基于文本的。

只要 OS X 程序的开发人员发布了他们的源代码并使用了跨平台库(例如 QT、GTK、X11、GNUStep或 WxWidgets),您就应该能够为 linux 重新编译 OS X 程序。OS X 和 Linux 在 API 级别比 ABI 级别更兼容。

GNUStep实现了 NeXTStep 和 OS X 的 Cocoa API。当我尝试它时,它的完整性令人震惊,从它似乎能够做的事情和在野外使用它的人数来看似乎很少。GNUStep 仅适用于源代码 (API) 级别,因此它适用于开源程序并使用 Apple 的 Cocoa GUI(不是专有的“Aqua”)。这取决于能够编译和链接代码。

将 API 或应用程序编程接口想象成汽车仪表盘之类的东西 - 汽车驾驶员可以看到一切,您可以进入其他人的汽车并找到他的不同仪表盘,就像弄清楚一样容易。

将 ABI 或应用程序二进制接口视为汽车的发动机 - 它在品牌和型号之间可能有很大差异,您可能无法轻松地将雪佛兰发动机换成沃尔沃。

在这个类比中,Darling 会将雪佛兰发动机放入沃尔沃的底盘中,而从源代码编译就像离开雪佛兰并进入沃尔沃一样。从程序员的角度来看,一个比另一个简单得多。

但是 Apple 拥有一些其他人也没有的专有用户界面库。如果开发人员使用其中之一(例如 Aqua),您将不得不等待并希望 Darling 像 Wine 一样长大,或者自己移植。如果没有发布源代码,就好像发动机做得太大以至于无法安装在沃尔沃的发动机舱中,或者设计用于连接到您的沃尔沃是后轮驱动的前轮驱动汽车。除非有人是一个绝对疯狂的疯子(以最好的方式),拥有数月的空闲时间和荒谬的奉献精神,否则这不太可能发生。

此外,就 Cocoa API 的覆盖范围而言,GNUStep 并非 100% 完整,因此对于复杂的程序可能仍然需要一些硬塞。并且 GNUStep 不提供与 xcode 等效的构建系统 - 也就是说,如果原始开发人员专门使用 XCode IDE 的“构建”系统,您可能需要为它编写 makefile。这对我来说是最令人沮丧的部分,因为虽然我有编译和链接软件的经验,但很难从我之前没有后端经验的 .xcodeproj 格式中获取有用的信息。