如何在Linux或Windows上编译OS X?

我想将我的C / C ++应用程序移植到OS X.

我没有Mac,但是我有Linux和Windows。 有这个工具吗?

似乎有一些脚本已被写入,以帮助您设置交叉编译的Mac; 我不能说他们有多好,或者如何适用于你的项目。 在文档中,参照这些指令进行交叉编译的是10.4,而这些交叉编译的是10.5; 这些说明可能比脚本更有用,具体取决于脚本如何适合您的需求。

如果你的程序是免费的或开源软件,那么你可能希望创build一个MacPorts portfile(文档在这里 ),并允许你的用户使用MacPorts来构build你的程序; 这通常是在Mac OS X上安装便携式免费或开放源码软件的首选方式。以前,MacPorts已经在Linux上运行,因此可能在Linux上开发和testing您的Portfile(尽pipe它显然需要在Mac上进行testing)。

对于Linux,有一个预先构build的GCC交叉编译器(来自公众可用的Apple修改的GCC源代码)。

https://launchpad.net/~flosoft/+archive/cross-apple

2015年更新

  1. 经过这么多年,行业标准的IDE现在支持OSX / iOS / Android。

http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311

  1. Embarcadero的RadStudio还支持在Windows上构buildOSX / iOS / Android应用程序。

  2. Thomas的这个答案也提供了一个交叉编译工具。

对于所有这些选项,您仍然需要一个真正的mac / i-device来testing应用程序。

我创build了一个名为OSXCross的项目,目标是从Linux开始针对OS X(10.4-10.9)。

它目前支持3.2以上的3.8(trunk)(你可以使用dist的clang )。
此外,你也可以build立一个最新的香草GCC (4.6 +)。

对于clangGCC ,LTO也同样适用。

目前使用cctools-870与ld64-242。

https://github.com/tpoechtrager/osxcross

  1. 获得“ VMware Player ”
  2. 获取“ Mac OS X vm映像 ”
  3. 编译/debugging/在新操作系统上集成和testing您的代码,以确保一切正常

当你想要在多个平台上工作时,你必须在预期的平台上编译/运行/集成/testing。 你不能只在一个平台上编译/运行,然后说“哦,它应该在另一个平台上工作”。

即使是像Java一样的非常好的跨平台语言,也会遇到问题,在其他平台上,它将无法正常工作。

我发现尊重我的时间/生产力/在多个平台上快速迭代的能力的唯一方法是使用其他平台的虚拟机。

还有其他解决scheme,如双引导和我没有提到的,但我发现他们不尊重我的生产力/时间。

以双启动为例:

  1. 我在OS 1上进行了更改
  2. 重新启动到OS 2
  3. 忘记OS 1上的东西
  4. 重新启动到OS 1
  5. 在OS 1上进行更改
  6. 重新启动到OS 2 … 再次

BAM有30分钟的时间,我没有做任何有效的工作。

你需要一个工具链来为mach-o进行交叉编译,但是即使你有这个工具链,也不会有苹果库的开发。 不幸的是,我不确定你将如何在没有他们的情况下进行移植。

苹果的发展本身就是一种怪异的怪物。 OS X使用GCC的一个端口进行一些修改,使其成为'appley'。 从理论上讲,Apple GCC和工具链以及Apple内核和库头文件的源代码是可能的,并且可以在Windows机器上构build交叉编译器。

为什么你想要沿着这条道路走下去就是超越了我。 你可以有一个便宜的Mac mini从$ 600。 无论如何,花在交叉编译器上的工作时间(特别是Unix工具的Windows主机)的成本可能会高于$ 600。

如果你真的热衷于让你的应用跨平台看Qt,wxWidgets或FLTK。 所有提供的跨平台支持只需对基本代码进行最less的更改。 至less你需要做的就是find一台苹果机来编译你的应用程序,如果你有一些技术上很头脑的朋友不介意给你SSH访问他们的Mac,这并不难。

你肯定会需要OS X。 即使你不拥有一台Mac,你仍然可以尝试一些替代品 。

我在网上发现了这个小文档: http : //devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt

这正好描述了你想要的。 我自己感兴趣,但还没有testing过(10分钟前发现)。 虽然文档看起来不错。

你可以从这个网站在云端雇佣一个mac 。 你可以从$ 1雇用他们,这应该是足够的(除非你需要 root权限,那么你正在寻找$ 49 +)。

有几个交叉编译器的设置,但几乎所有这些都是用于distcc风格的分布式编译。 据我所知,如果没有Mac,就没有办法直接瞄准Mac平台。 无需使用QT或wxWidgets即可获得最接近OpenStep的GNUStep或类似内容,但这不是一个真正的Cocoa平台,只是非常接近。

简短的答案是种。 您将需要使用像QT这样的跨平台的库。 有像IDE的QT Creator,可以让你在一个操作系统上开发,并为其他人生成Makefile。 有关跨平台开发的更多信息,请查看此播客的跨平台插曲(请注意,该系列还没有结束,新的插曲每周都会出现)。

正如其他答案解释,你可能可以编译为Windows或Linux上的Mac,但你将无法testing你的应用程序,所以如果你正在做专业编程,或者如果你正在工作,你应该花费$ 600的Mac在开源软件find一个开发人员与Mac将帮助你。