在Xcode 4.2和iOS SDK 5.0中使用gcc 4.2

时间:2011-10-14 08:46:53

标签: iphone ios xcode gcc compiler-construction

我今天早些时候刚刚升级到Xcode 4.2和iOS SDK 5。但是新的编译器似乎有些不同。

现在有两个“Compiler for C / C ++ / Objective-C”选项,“Apple LLVM编译器3.0”和“LLVM GCC 4.2”。缺少GCC 4.2。

Apple LLVM编译器3.0,构建速度非常快(我喜欢它),给了我999+警告,我的游戏再也无法运行了。看起来内存存在一些差异,加载游戏脚本时会崩溃。

LLVM GCC 4.2真是太神了,我仍然无法在我的i7机器上完成一次构建。

而且,还有一件事是我们的引擎使用gcc命令行来构建(而不是xcode)。

因此,它导致了一个问题,如何在Xcode 4.2中使用gcc 4.2 ?这甚至可能吗?

3 个答案:

答案 0 :(得分:4)

以下是在 xcode 4.2 中使用 gcc 4.2 进行编译的方法。其中大部分是通过命令行完成的,所以当你看到如下所示的行:[ 15:30 jon@MacBookPro / ]$时,你需要打开终端并在$之后运行命令。

  

此过程中没有文件或目录被删除已删除,因此如果您将来需要使用LLVM进行编译,则很容易撤消。

  1. 下载 - 但安装 - xcode_4.1_for_lion.dmgxcode_4.1_for_snow_leopard.dmg

  2. 现在,按照以下步骤将Xcode 4.1安装到/Developer-4.1

    1. 备份工作/Developer目录(安装Xcode 4.2的地方)

    2. [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2
      
    3. 使用默认安装位置(/Developer)运行Xcode 4.1安装程序

    4. 将新的Xcode 4.1安装移至/Developer-4.1

      [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1
      
    5. 将Xcode 4.2开发人员目录移回/Developer

      [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer-4.2 /Developer
      
  3. 编辑Xcode 4.2 GCC 4.2.xcspec文件,使gcc 4.2显示在编译器选项 [1] 列表中:

    [ 15:30 jon@MacBookPro / ]$ sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2 (Plausible Blocks).xcplugin/Contents/Resources/GCC 4.2.xcspec"
    
    • 从此处更改 41 42 行:

      ShowInCompilerSelectionPopup = NO;
      IsNoLongerSupported = YES;
      
    • To This:

      ShowInCompilerSelectionPopup = YES; 
      IsNoLongerSupported = NO;
      
  4. 备份Xcode 4.2 iOS /模拟器框架usr目录:

    [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr.backup
    [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr.backup
    
  5. 将Xcode 4.1 iOS / Simulator Framework usr目录复制到Xcode 4.2:

    [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr
    [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr
    
  6. gccinfo iOS SDK库目录从Xcode 4.1复制到Xcode 4.2 [2]

    [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc
    [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/info /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/info
    
  7. 使用gcc-4.2进行编译!

    Screenshot of CGG 4.2 in xcode 4.2


  8. <强> This is a blog post I've written with a little more info about this process. Feel free to leave a comment on the blog if you run into any issues or have any questions.


    [1] 如果从命令行打开(使用viemacsnano之类的东西等),请确保封闭路径在引号“/ long path / with spaces / in / file.xcspec”或转义空格 / some / long \ path / with \ spaces / in \ it / file.xcspec < / KBD>

    [2] 这是必要的,因为iPhoneOS.platform SDK有自己独立的/usr/lib目录,但iPhoneSimulator.platform SDK没有

答案 1 :(得分:3)

在今年的WWDC中,Apple表示GCC已不再适用于XCode 4.2。但是,他们表示LLVM编译器支持与GCC相同的命令行开关。

答案 2 :(得分:1)

我尝试为适用的Xcode版本更新此内容。这将显示如何安装Xcode 4.4.x并支持完整的gcc。

你需要:Mac OSX Lion - 这很重要,不要试试Mountain Lion!

您需要:Lion的Xcode 4.1副本。使用您的开发者帐户从Apple下载。不要安装。

现在通过Mac App Store从Apple安装Xcode 4.4.x.

完成此操作后,您的应用程序目录中将包含xcode 4.4.x.

根据用户权限,您必须使用管理员密码确认许多操作。必要时这样做。如果你损坏你的系统,你就是你自己(不应该发生,因为Xcode已经被应用了)。

通过鼠标右键单击和“显示包内容”打开Xcode 4.4.x,然后在此处导航到gcc 4.2插件:

/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2.xcplugin / Contents / Resources /

使用文本编辑器打开文件gcc 4.2.xcspec。

查看第41和第41行。确保它们看起来与此处显示的完全相同(值将在全新安装中反转)。

ShowInCompilerSelectionPopup = YES;
IsNoLongerSupported = NO;

保存并关闭。

为Lion安装Xcode 4.1。

现在导航到启动驱动器根目录下的开发人员目录。

导航至/Developer/Platforms/iPhoneOS.platform/Developer/usr /

使用command-c

复制usr目录

切换回xcode 4.4.x

导航至:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /

使用command-v

粘贴usr目录

现在狮子会尝试合并这两个目录。确保按“保持更新”

重复源:/Developer/Platforms/iPhoneSimulator.platform/Developer/usr 目标:/Applications/Xcode.app/Contents/Developer/Platforms/usr

再次,合并和“保持更新”

导航至:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib

现在通过选择它并使用command-c

来复制gcc目录

导航到Xcode 4.4.x应用程序:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib

使用command-v

粘贴gcc目录

使用'info'目录从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib重复 目标是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib

完成。启动xcode并在必要时在设置中选择GCC 4.2。您应该删除过时的“开发人员”目录。

Xcode现在也应该再次通过Mac App Store接受更新(这仍有待测试)。我也没有下载命令行工具,但我的猜测是它也会存活下来。