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

时间:2009-03-29 01:37:28

标签: c++ c macos cross-compiling

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

我没有Mac,但我有Linux和Windows。有没有这方面的工具?

11 个答案:

答案 0 :(得分:48)

对于Linux,有一个预建的GCC交叉编译器(来自公开发布的Apple修改后的GCC源代码)。

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

2015年更新

  1. 经过这么多年,行业标准IDE现在支持OSX / iOS / Android。
  2. http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311

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

    2. answer Thomas也提供了交叉编译工具。

    3. 对于所有这些选项,您仍然需要一个真正的mac / i设备来测试应用程序。

答案 1 :(得分:29)

我创建了一个名为OSXCross的项目,旨在从Linux中定位OS X(10.4-10.9)。

它目前支持clang 3.2至3.8(主干)(您可以使用您的dist clang)。
此外,您还可以构建最新的香草GCC(4.6+)。

LTO同样适用于clangGCC

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

https://github.com/tpoechtrager/osxcross

答案 2 :(得分:22)

似乎已经编写了some scripts来帮助您设置Mac的交叉编译;我不能说它们有多好,或者对你的项目有多适用。在文档中,他们引用these instructions进行交叉编译10.4,these ones进行交叉编译10.5;这些说明可能比脚本更有用,具体取决于脚本满足您需求的程度。

如果您的程序是免费或开源软件,那么您可能希望创建一个MacPorts端口文件(文档here),并允许您的用户使用MacPorts构建您的程序;这通常是在Mac OS X上安装便携式免费或开源软件的首选方式。过去已知MacPorts可以在Linux上运行,因此可以在Linux上开发和测试您的Portfile(尽管显然需要它)在Mac上测试。

答案 3 :(得分:6)

  1. 获取“VMware Player
  2. 获取“Mac OS X vm image
  3. 在新操作系统上编译/调试/集成并测试您的代码以确保一切正常

  4. 当您尝试在多个平台上运行时,您绝对必须在目标平台上编译/运行/集成/测试。你不能只在一个平台上编译/运行然后说“哦,它应该在另一个平台上工作相同”。

    即使使用像Java这样的非常好的跨平台语言,您也会遇到一些问题,而这些问题在其他平台上无法完全相同。

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

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

    以双启动为例:

    1. 我在OS 1上进行了更改
    2. 重新启动到OS 2
    3. 忘掉OS 1上的内容
    4. 重启进入OS 1
    5. 在OS 1上进行更改
    6. 重新启动到OS 2 ... AGAIN ...
    7. BAM 有30分钟的时间,我没有任何生产力。

答案 4 :(得分:4)

你肯定会以某种方式需要OS X.即使您没有Mac,您仍然可以尝试一些alternatives

答案 5 :(得分:4)

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

答案 6 :(得分:4)

苹果开发本身就是一个奇怪的野兽。 OS X使用GCC的端口进行一些修改以使其“appley”。从理论上讲,可以使用Apple GCC和工具链以及Apple内核和库头文件,并在Windows机器上构建交叉编译器。

为什么你想要沿着这条路走下去超出我的范围。你可以从$ 600起买一台便宜的Mac mini。您投入使交叉编译器正常工作的时间(特别是使用适用于Unix工具的Windows主机)的成本可能会超过600美元。

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

答案 7 :(得分:3)

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

这准确描述了你想要的东西。我自己对此感兴趣,但尚未测试过(10分钟前发现)。但是文档似乎很好。

答案 8 :(得分:2)

您可以从this网站在云中招聘广告。你可以从$ 1雇用它们,这应该足够了(除非你需要 root访问权限,然后你看$ 49 +)。

答案 9 :(得分:-2)

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

答案 10 :(得分:-5)

简短的回答是那样的。您需要使用像QT这样的跨平台库。像QT Creator这样的IDE可以让你在一个操作系统上开发并为其他操作系统生成Makefile。有关跨平台开发的更多信息,请查看this podcast的跨平台剧集(请注意,该系列节目尚未结束,新剧集似乎每周都会出现)。

正如其他答案解释的那样,您可以在Windows或Linux上编译Mac,但是您将无法测试您的应用程序,因此如果您正在进行专业编程,或者如果您正在进行专业编程,那么您应该花费600美元购买Mac正在开发开源软件,找到一位可以帮助你的Mac开发人员。