![在 Linux 上运行 Mac OS X 应用程序](https://linux22.com/image/6483/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%BF%90%E8%A1%8C%20Mac%20OS%20X%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
答案1
亲爱的 (关联)是一个旨在变得类似于葡萄酒的项目。不过目前它只运行一些命令行 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(或应用程序二进制接口)视为汽车的发动机 - 它在品牌和型号之间可能存在很大差异,并且您可能无法轻松地将雪佛兰发动机换成沃尔沃。
在这个类比中,亲爱的会将雪佛兰发动机放入沃尔沃的底盘中,从源代码进行编译就像从你的雪佛兰进入沃尔沃一样。从程序员的角度来看,其中一个比另一个更简单。
但苹果公司拥有一些其他人也没有的专有用户界面库。如果开发者使用其中之一(例如 Aqua),您将不得不等待并希望 Darling 像 Wine 一样成长,或者自己移植它。如果没有发布源代码,就好像发动机做得太大以至于无法放入沃尔沃的发动机舱,或者设计用于连接到前轮驱动汽车,而您的沃尔沃是后轮驱动的。除非某人是一个绝对疯狂的疯子(以最好的方式),有几个月的空闲时间和可笑的奉献精神,否则这种情况不太可能发生。
此外,GNUStep 在 Cocoa API 的覆盖范围方面并不是 100% 完整,因此对于复杂的程序来说,一些硬塞可能仍然是必要的。而且 GNUStep 不提供与 xcode 等效的构建系统 - 也就是说,如果原始开发人员专门使用 XCode IDE 的“构建”系统,您可能需要为其编写 makefile。这对我来说是最令人沮丧的部分,因为虽然我有编译和链接软件的经验,但很难从像 .xcodeproj 这样的格式中获取有用的信息,而我之前没有后端经验。