猿问
下载APP

我们如何恢复ppc / ppc64以及对Xcode 4的完整10.4 / 10.5 SDK支持?

由于Apple只发布带有Xcode4的SDK 10.6,因此用Xcode4开发PPC应用程序变得不可能。虽然可以使用Xcode4开发应用程序,也可以在10.5甚至10.4系统上运行(通过选择SDK 10.6,但部署目标10.5或10.4),它们只能在Intel Mac上运行,因为您至少需要SDK 10.5才能运行构建PPC应用程序。

此外,还有一些罕见的情况,您需要在10.6之前构建一个SDK以获得完整的平台支持,例如,如果某些已弃用的功能已完全从10.6 SDK中消失,但您必须使用它并且动态链接不是在这些情况下总是最好的选择。同时链接早期的SDK有时会使开发变得简单,因为它会导致与早期操作系统版本不兼容,因为它会导致与早期操作系统版本不兼容,并且任何尝试使用它无论如何都会立即导致编译器或链接器错误。

最后但并非最不重要的是Apple还从Xcode4中删除了GCC 4.0支持,这可能是某些软件正确构建所必需的,Apple在使用SDK 10.4时从未允许使用GCC 4.2编译软件,尽管我几乎不相信这会导致任何问题,毕竟使用GCC 4.2和SDK 10.6构建的软件也可以在Mac OS 10.4上运行而没有任何问题,只要已正确设置部署目标并且没有使用MacOS 10.4下不可用的功能。

当然,你总是可以在Xcode4旁边并行安装Xcode3,但这意味着你必须放弃Xcode4的所有(伟大的?)新功能,并继续使用过时的Xcode3 IDE。如果您还可以在同一个IDE中管理所有旧项目,并且可以使用任何新功能,那肯定会好得多。并非所有项目都可以在可预见的将来制作10.6或英特尔。此外,我严格反对在早期实际需要之前取消对旧平台的支持。

我们可以将此功能恢复到Xcode4吗?


繁星淼淼
浏览 52回答 3
3回答

翻翻过去那场雪

快速回答是:是的,我们可以!在我进入“ 如何完成 ”部分之前,这里有一些关于我的补丁/黑客/修复的注释。从一开始,主要目标就是:将所有修改保持在最低限度。我们希望尽可能保持Xcode设置的原始性。无论如何,请尽量避免修补或修改任何文件。我们希望所有文件保持不变并保留其原始内容。除非绝对必要,否则尽量避免移动或复制文件。我能够保持所有这些目标。几乎所有事情都是通过创建符号链接来完成的。只有一个现有的符号链接必须被替换,我们将在替换之前备份它,以防万一。如果您不是终端操作专家,我强烈建议您将我的回复中的所有终端命令复制/粘贴到您的终端,以避免拼写错误。请记住,均匀间距,引用和特别是大写可能很重要。逐行复制/粘贴它们,一次不要超过一行,并在每个粘贴的行后点击返回以执行命令。如果任何操作都提示您输入密码,这将是当前登录的管理员用户的密码(键入时不显示您的击键,这是正常的,不要担心,只需输入密码并点击返回;重新 - 如果你有一个错字并再次得到提示)。条件在我们开始之前,请确保满足以下条件:您以管理员用户身份登录。您已启动Terminal.app(Applications / Utilities)并且终端窗口已打开。您可以获得Xcode3(例如3.2.5)和Xcode4磁盘映像(DMG)或安装程序的副本。如果您已经安装了Xcode版本,请考虑先卸载它,这样您就可以从一个全新/干净的设置开始。卸载Xcode不会删除您的首选项,配色方案或键绑定自定义。理想情况下,您将从一个当前未安装Xcode版本(既不是3也不是4)的系统开始。第1步:安装Xcode3重要提示:不要安装Xcode3的“ 系统工具 ”或“ Unix开发 ”包。是否要安装“ Mac OS X 10.4 SDK ”和/或“ 文档 ”由您决定。如果这是带有iOS SDK的Xcode3,无论您是否安装,也取决于您。您可以自由选择安装的任何目标文件夹。对于本指南,我选择了“ / Xcode3 ”,但随意选择另一个。只需确保相应地更改所有终端命令。这里给出的步骤顺序通常不是很重要,但我强烈建议你不要交换第1步和第2步.Xcode总是在所选目标文件夹之外安装几个文件并信任我,最后你想要的磁盘上这些文件的Xcode4版本。通过在Xcode4之前安装Xcode3,您可以确定Xcode4将在必要时覆盖这些文件。我曾经交换了第1步和第2步,最后我遇到了一些可能与错误订单有关的奇怪问题(我不能肯定地说,但是按照正确的顺序重新安装后问题就消失了)。第2步:安装Xcode4选择你喜欢的任何数据包。建议安装“ 系统工具 ”,但并非绝对必要(尽管大多数人迟早会错过该功能)。再次,随意选择您喜欢的任何目标文件夹。对于本指南,我选择了正常的目标文件夹“ / Developer ”,如果您选择另一个,请相应地更改所有终端命令。第3步:恢复10.4 / 10.5 SDK支持切换到终端窗口并运行以下命令:cd / Developer / SDKssudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk。sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk。当然,如果您还在步骤1中安装了SDK 10.4,则只运行10.4u的命令。这足以将SDK 10.5(可能还有10.4)带回Xcode4中的选择列表。如果你愿意,可以尝试一下。启动Xcode4,打开一个项目,尝试更改选定的SDK。这很简单,对吧?在继续下一步之前,请务必再次关闭Xcode4(应用程序,而不仅仅是窗口)。第4步:恢复GCC 4.0支持如果您尚未安装MacOS 10.4 SDK或者您不打算使用它,则可以安全地跳过此步骤并继续执行步骤5。要使用SDK 10.4,您必须使用GCC 4.0,GCC 4.2将无法使用。Apple声称GCC 4.2与SDK 10.4不兼容,如果你问我,这是一个骗局。我已经不止一次地覆盖了这个限制,因此它从来没有出现过最微小的问题。修改SDK 10.4会很容易,因此Xcode会允许你使用GCC 4.2,但我的目标是避免所有文件修改,所以我们只是将GCC 4.0支持添加回Xcode,这也是一件好事,因为一些项目真的依赖于GCC 4.0(例如,GCC 4.2中存在一些错误,这些错误阻止有效的内联汇编代码无错误地编译,而相同的代码在GCC 4.0和GCC 4.4上完美编译)。回到终端:cd / Developer / usr / binsudo ln -s /Xcode3/usr/bin/*4.0*。cd / Developer / usr / libexec / gcc / powerpc-apple-darwin10sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1。现在我们已经恢复了完整的GCC 4.0支持,除了Gcode 4.0在Xcode4中仍然无法选择的事实。那是因为Xcode4不再具有GCC 4.0编译器插件。幸运的是,Xcode3插件也适用于Xcode4,只是位置发生了根本性的变化。Apple现在将这些插件深藏在一个捆绑包中,只有插件似乎可以工作,将它们置于旧位置似乎没有任何效果。cd / Developer / Library / Xcode / PrivatePlugInscd Xcode3Core.ideplugin / Contents / SharedSupport / Developer / Library / Xcode / Plug-inssudo ln -s“/ Xcode3 / Library / Xcode / Plug-ins / GCC 4.0.xcplugin”。现在再次启动Xcode4,打开一个项目并尝试选择编译器。您应该在列表中找回GCC 4.0。现在您实际上已经可以选择SDK 10.4或10.5,GCC 4.0,您应该没有问题来构建PPC二进制文件。只需为“ Architecture ”构建设置选择“ Other ... ” 并手动输入“ ppc ”,然后将“ Valid Architectures ” 更改为“ ppc ”。我们差不多完成了,除了尝试使用GCC 4.2和SDK 10.5构建PPC二进制文件仍然会失败。步骤5:恢复GCC 4.2的PPC支持由于Apple仅支持Xcode4中的Intel平台,因此并非所有GCC 4.2工具都是通过PPC支持构建的。有一个重要的工具没有PPC支持,该工具被命名为“ as ”,它是GNU汇编程序。要使用GCC 4.2编译ppc / ppc64二进制文件,我们需要使用支持ppc / ppc64 的“ as ”版本。这是唯一一个文件(实际上它也是一个符号链接),我们必须首先将其移到一边(制作备份副本),然后才能用符号链接替换它:cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1sudo mv as as.baksudo ln -s / Xcode3 / usr / bin / as。第6步:没有第6步这就是所有人。考虑到这是多么容易,你可以想象Apple肯定没有放弃SDK 10.4 / 10.5或ppc / ppc64或GCC 4.0支持,因为这是必要的,他们放弃了所有这些,因为他们想放弃它。我希望这个设置对你来说和我一样有效。我已经能够在Xcode4中编译我所有的旧项目,而不需要做任何重大更改,除了必须在这里和那里改变搜索路径。PS:我在这里回答我自己的问题可能看起来很奇怪,但既然我已经找到了如何自己解决这个问题,我想与社区分享我的知识,因为我相信这是非常有价值的输入。所有MacOS开发人员都在那里。在很多地方已经多次询问过这个问题,到目前为止,我从未见过有人提出过类似的问题。分享财富,传播知识等等,你知道我的意思。如果您仍有问题/疑问:如果您对此主题有其他疑问,或者如果您仍然无法正确构建旧项目,请执行Stack Overflow设计的目的:点击本页右上角的“提问”并创建一个新问题。这样整个社区可以帮助您解决这些问题,因为问题可能不会直接(甚至可能不间接)与此黑客相关。我建议你提一下你在问题的最开始就应用了这个黑客的事实。也许你甚至想直接链接到这个问题,以便从未听说过这个黑客的人可以很容易地查找它。当你提到SDK 10.4 / 10.5,PPC或GCC 4.0与Xcode4结合使用时,大多数人都会感到困惑,Xcode4正式支持这两者。如果你忘记提及这个黑客,你可能会得到相当愚蠢的评论而不是体面的回复。请不要在回复或评论中发布您的问题或问题。将它们作为回复发布是没有意义的,因为它们没有回复,并且人们无法回复您,除了使用评论之外,评论可能没有提供足够的空间来回答您的问题或对您提出合适的解决方案问题。并将它们作为评论发布意味着你只限于非常小的空间和跟踪回复评论将很难,因为评论没有树状层次结构(进一步他们仍将提供很少的空间来获得体面的回复/解决方案)。谢谢。当然,欢迎其他类型的评论以及对原始问题的更好回复;-)

慕容708150

只有Xcode4的另一种简单方法,不再需要Xcode3。$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwinEDITS:对于Xcode 4.1,sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwinsudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwinsudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-apple-darwin11-cpp-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-apple-darwin11-gcc-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /usr/bin/powerpc-apple-darwin11-g++-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-cpp-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-gcc-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-g++-4.2.1sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc您只能将Gcc-4.2用于PowerPC。并且“-isysroot /Developer/SDKs/MacOSX10.6.sdk”选项是必需的,因为10.7 SDK不再支持PowerPC。

收到一只叮咚

我收集了此页面中的所有信息,Mac OS X提示,splhack.org以及此处引用的其他资源,并汇总了一组BASH脚本,这些脚本可自动执行恢复PPC和GCC 4.0支持的过程。 XCode 3安装或只是XCode 4自己的iPhone平台文件。一如既往,谨慎使用!并请提供任何修复或改进。这些脚本仅在我自己的系统上进行了测试。你可以从GitHub下载它们:https://github.com/thinkyhead/Legacy-XCode-Scripts
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答