你能在Linux上运行Xcode吗?

234

你能在Linux上运行Xcode吗?因为Mac OS X是基于BSD Unix的,所以可能吗?

据我所知,有一个MonoDevelop插件带有iPhone模拟器。


3
我认为这正是你所寻找的。苹果公司发布了Swift来取代Xcode用于Linux和iOS开发者。http://www.cnet.com/news/apple-introduces-swift-2/ - PauAI
1
他们发布了Swift而不是Xcode。 - Antzi
还不够好。只是这种语言是开源的,并且与标准库一起发布在Linux上。它并不旨在制作iOS应用程序或替代Xcode。更像是使用Swift制作Linux应用程序。当然,这将简化想要制作交叉编译器的人的工作。 - Antzi
16个回答

489

Xcode 的低级工具链(包括 gcc 编译器家族、gdb 调试器等)全部都是开源的,并且适用于 Unix 和 Linux 平台。但是 IDE——编辑器、项目管理、索引、导航、构建系统、图形化调试器、可视化数据建模、SCM 系统、重构、项目快照等——是 Mac OS X Cocoa 应用程序,不具备可移植性。


99
+1 棒极了,对于通用和面向 Mac 的内容的简要概述非常清晰。 - curtisk
15
更不用说在其他操作系统上运行它很可能会违反其最终用户许可协议(EULA)。对于许可协议,苹果特别严格要求。 - jpaugh
3
这并不完全正确(或者已经过时)。标准的GCC不能生成Mach-O目标文件,但是Clang可以。然而,你仍需要苹果的ld来链接最终的二进制文件。 Darling可以在Linux上运行原始的Xcode工具链(但不包括Xcode集成开发环境)。 - LubosD
1
为什么Cocoa应用程序不可移植? - altruios

50

还没有人建议过Vagrant,所以这里是为Mac OS X准备的Vagrant box

vagrant init AndrewDryga/vagrant-box-osx --box-version 0.2.1
vagrant up
# editor's notes:
# - this requires virtualbox
# - version 0.3.1 (2016) is down now, so version 0.2.1 (2015)
# - there are notes for building an image one's self at the site

你有一个MACOS虚拟机。但根据苹果的最终用户许可协议,你仍然需要在MacOS硬件上运行它:D 但无论如何,这里是给所有抹掉了MacOS并安装了Ubuntu的极客们的一个提示:D

不幸的是,你不能使用SSH X-forwarding选项从内部运行编辑器。


5
在使用Xcode构建应用程序时,是否需要能够运行GUI编辑器,还是可以通过CLI完成? - Jose V
1
似乎该URL已失效,有人有更新的链接吗? - bdotsamir
这个似乎更加更新:https://app.vagrantup.com/amarcireau/boxes/macos 你可以在那个网站上搜索更多。 - fuzzyTew

32

我实际上想评论而不是回答。但为了准确起见,OSX并不是基于BSD,它是NeXTStep的演变。NeXTStep操作系统使用CMU开发的Mach内核。它最初被设计为微内核,但由于性能限制,他们最终决定将Unix部分API包含到内核本身中,因此一个兼容BSD的“服务器”(最初旨在处理BSD兼容的内核消息)被移动到内核中,使其成为单片内核。它可能在编程API上与BSD兼容,但它并不是BSD。

操作系统的其他部分涉及ObjectiveC (在Stepstone和GNU / GCC的Richard Stallman之间的安排下) ,并且基于一种称为“显示Postscript”的技术...类似于X Server,但具有后置命令。 OS X将Display Postscript更改为Display PDF,并将一般硬件要求增加了1000倍(NeXT可以运行在8-16MB,现在需要GB)。

由于GCC和Objective C以及NeXT之间的紧密关系,您在Linux上本地运行XCode的最佳选择是使用GNUStep库进行移植(如果您可以拿到源代码 - 祝你好运)。最初是为NextStep和OpenStep兼容性而设计的,我听说现在它们已经基本上与Cocoa兼容,但我已经有将近20年没有玩过其中任何一个。当然,这只能让你进入ObjC,而不是Swift,并且我不知道苹果公司是否会开源它。


19

你可以使用Darling在Linux上原生运行Xcode:

Darling是一种翻译层,可让您在Linux上运行macOS软件

安装后,您可以通过命令行开发人员工具按照此链接安装Xcode。


1
理论上是可以的,但实际情况并非如此。安装过程非常痛苦,而且遗憾的是Darling本身并不够稳定,无法用于重要的工作。 - Firzen

10

如果你运行VMware Player或Workstation(或者可能是VirtualBox,我不确定它是否支持Mac OS X),然后运行Mac OS X Server(客户端不能合法地虚拟化)。当然,在这种情况下,你正在OS X上运行XCode,但你的主机可能是Linux。


6
确实可以在VirtualBox中运行OS X。我以这种方式运行10.8 Mountain Lion。您必须遵循操作指南。它几乎完美无缺地运行。我是丹麦人,所以我不得不建立自己的键盘布局。 - Kristian Spangsege
3
即使服务器只能在苹果硬件上(合法地)虚拟化,但我认为在苹果硬件上运行Linux然后以Mac OS X作为其客户机是合法的(尽管我不确定这是否是一个有吸引力的选择)。@KristianSpangsege:很高兴听到它在VirtualBox下为您工作……我安装了大约5个不同版本,所有版本都非常慢。我曾以为这是所有虚拟化的MacOSX的问题,直到我切换到VMware……几乎没有问题(偶尔会出现短暂的减速)。 - johndodo

8
如果你无法花费数千美元购买一台不错的Mac电脑,那么在云中运行OSX和XCode是一个选择:

http://www.macincloud.com/


1
这不是免费的,我宁愿买一个真正的苹果电脑。 - maDeveloper

3

我认为你需要使用MonoTouch(非免费!)来使用该插件。

而且,没有办法在Linux上运行Xcode。

很抱歉带来这些坏消息。 :)


3
不,您可能听说过MonoTouch,这是用于iPhone开发的.NET/mono环境。但您仍需要一台Mac和官方的iPhone SDK。模拟器是官方的苹果模拟器,它充当单独的IDE,使您无需使用Objective C编码,而是使用c#编码。
这至少是一个有趣的项目...
编辑:显然,现在可以在应用商店上分发,早期还不行...

2
我建议使用KVM。它几乎提供了本地性能,并且已经内置于Linux中。去看看吧。
你会感觉像是在使用Mac,然后在那里安装Xcode,你甚至可以选择直接启动OSX GUI而不是Linux GUI。

2
最简单的方法是使用带有OSX副本的虚拟机来完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接