为什么不是所有的 Mac 应用程序都可以轻松移植到 Linux?

Nic*_*int 17 linux mac bsd portable macos

既然 Apple OS-X 操作系统是 UNIX 衍生品 (BSD),而底层(Intel)Mac 架构是一样的,为什么在 Linux 上运行 Apple 特定的应用程序不是很简单?

fre*_*tje 25

OS X 实际上(主要)是 BSD 之上的专有图形外壳。要创建 OS X GUI 应用程序,必须遵循 Apple 公开的 API,因此这不是跨平台的,也不容易移植。
这就是为什么大多数库容易移植(实际上大多数是在 Linux 上开发的)到 Linux 而不是它们的图形 shell。

附带说明:有一些框架可以用来创建跨平台 GUI 应用程序。想到了Qt。但是,这些框架是跨平台的这一事实也使得用它们创建的应用程序在特定平台上的用户友好性不如“本机”GUI 应用程序。这些框架往往让所有东西看起来跨平台通用,这在 Apple 的情况下是糟糕的,因为 Apple 创造了一种非常具体的用户体验,不容易“适应”其他平台。

编辑(将评论合并到答案中 - 感谢 @Nick、@kbisset 和 @John):
一个解决方案是移植整个 OS X 图形外壳(封闭源代码 Cocoa/Core 库 - 这就是让 OS X 真正独一无二的原因) 到 Linux。从技术上讲,Apple 可以很容易地做到这一点,但他们没有理由这样做,因为他们的整个商业模式都是其整个平台的独特性——硬件和软件。
可以想象有人可以尝试克隆库,但这需要几十年的时间,而且可能永远不会正确,因为必须复制所有未记录的调用。

  • 两个原因。首先,它不仅仅是一个图形外壳。它是 Unix 之上的一个完整层,Apple 多年来一直在努力。其次,代码不可用。所以它需要从头开始重写。苹果可能会在短时间内做到这一点,但他们没有理由这样做。 (8认同)
  • GNUStep 是 OS X 中许多核心库的开源实现,但是 Apple 从那时起添加了许多核心库,因此移植仍然不是那么容易:http://wiki.gnustep.org/index.php/Cocoa (4认同)
  • 尼克:基本上,是的。Apple 对将 OSX 迁移到 Linux 平台没有任何兴趣;当他们在他们的开源 Darwin 平台(BSD 层)和他们的闭源 Cocoa/Core* 库(这就是 OSX 真正独特的地方)上投入了大量资金时,他们为什么要这样做。他们的整个商业模式是他们整个平台的独特性——硬件和软件。可以想象有人可以尝试克隆库,但这需要几十年的时间,而且可能永远不会正确,因为必须复制所有未记录的调用。最终目的是什么? (3认同)