如何在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年更新
- 经过这么多年,行业标准的IDE现在支持OSX / iOS / Android。
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311
-
Embarcadero的RadStudio还支持在Windows上构buildOSX / iOS / Android应用程序。
-
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 +)。
对于clang
和GCC
,LTO也同样适用。
目前使用cctools-870与ld64-242。
- 获得“ VMware Player ”
- 获取“ Mac OS X vm映像 ”
- 编译/debugging/在新操作系统上集成和testing您的代码,以确保一切正常
当你想要在多个平台上工作时,你必须在预期的平台上编译/运行/集成/testing。 你不能只在一个平台上编译/运行,然后说“哦,它应该在另一个平台上工作”。
即使是像Java一样的非常好的跨平台语言,也会遇到问题,在其他平台上,它将无法正常工作。
我发现尊重我的时间/生产力/在多个平台上快速迭代的能力的唯一方法是使用其他平台的虚拟机。
还有其他解决scheme,如双引导和我没有提到的,但我发现他们不尊重我的生产力/时间。
以双启动为例:
- 我在OS 1上进行了更改
- 重新启动到OS 2
- 忘记OS 1上的东西
- 重新启动到OS 1
- 在OS 1上进行更改
- 重新启动到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将帮助你。