【问题标题】:How to use gcc 4.2 with Xcode 4.2如何在 Xcode 4.2 中使用 gcc 4.2
【发布时间】:2011-12-08 20:02:28
【问题描述】:

对于一些较旧的代码,我需要将 gcc 4.2 与 Xcode 4.2 一起使用。我如何让它显示 向上。 Xcode4.2 似乎已经放弃了对它的支持。

谢谢

【问题讨论】:

    标签: iphone ios4 xcode4.2 gcc-4.2


    【解决方案1】:

    这是一种在 xcode 4.2 中启用 gcc 4.2 编译的方法。这主要是通过命令行完成的,所以当您看到以 [ 15:30 jon@MacBookPro / ]$ 开头的行时,您需要打开 Terminal.app 并运行在 $ 之后开始的命令。

    在这个过程中没有removeddeleted文件或目录,所以如果你以后需要用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
      
  • 编辑 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"
    
    • 从这里更改第 4142 行:

      ShowInCompilerSelectionPopup = NO;
      IsNoLongerSupported = YES;
      
    • 到这里:

      ShowInCompilerSelectionPopup = YES; 
      IsNoLongerSupported = NO;
      
  • 备份 Xcode 4.2 iOS/Simulator Framework 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
    
  • 将 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
    
  • 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
    
  • 使用 gcc-4.2 编译!

  • 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 it/file.xcspec" 或转义空格 /some/long\ path/with\ spaces/in\ it/file.xcspec

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

    【讨论】:

    • 嗨,谢谢,但我没有在编译器选项下获得 gcc 选项。我只有 LLVM 3.0 和 LLVM gcc 4.2。如何让 IDE 显示 gcc 编译器
    • can't exec '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2' (没有这样的文件或目录)
    • 我是否还需要创建一个 gcc-4.2 目录,只是它不在步骤列表中。我在 IDE 中设置了它,这很好,但是当我尝试构建时,我得到了上述错误
    • 不幸的是,我卸载了 Xcode,所以 gcc4.2 不在我的机器上,所以我的问题。我想我会重新安装
    • @tech74 酷,祝你好运!顺便说一句,gcc-4.2 仍应安装在 /usr/bin/
    【解决方案2】:

    因此,让 gcc 4.2 与全新安装的 Xcode 4.2(非 iOS)一起工作的完整过程是:

    1. 安装 gcc 4.2

      sudo port install apple-gcc42
      
    2. 通过编辑 Xcode 4.2 GCC 4.2.xcspec 文件使 gcc 4.2 显示在编译器选项列表中,调整 Xcode 以使 gcc 4.2 显示为编译器选项:

      1. 打开 xcspec 文件进行编辑:

        sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec"
        
      2. 从这里更改第 41 和 42 行:

        ShowInCompilerSelectionPopup = NO;
        IsNoLongerSupported = YES;
        

        到这里:

        ShowInCompilerSelectionPopup = YES;
        IsNoLongerSupported = NO;
        
    3. 将 gcc 4.2 二进制文件链接到 Xcode 期望的位置:

      sudo ln -s /opt/local/bin/gcc-apple-4.2 /Developer/usr/bin/gcc-4.2
      sudo ln -s /opt/local/bin/g++-apple-4.2 /Developer/usr/bin/g++-4.2
      

    我在this blog post 中解释了问题和解决方法,它浓缩了我找到的信息。欢迎发表评论。

    【讨论】:

      【解决方案3】:

      感谢 chown 分享这个!挣扎了半天左右,结果发现,我只需要几步就可以实现目标:

      对于只需要 GCC-4.2 来编译应用程序的每个人(没有 iOS 的东西),这很容易: 您无需安装任何东西,只需按照以下几个步骤操作:

      1. 编辑:如果您尚未安装 GCC 4.2(来自早期版本的 Xcode,或手动安装),请按照 cmets 中 Sean DeNigris 的说明进行操作!

      2. 按照原始描述的第 3 步进行操作:
        编辑 Xcode 4.2 GCC 4.2.xcspec 文件,让 gcc 4.2 显示在编译器选项列表中。

      3. 让 Xcode 再次找到编译器:

        ln -s /usr/bin/gcc-4.2 /Developer/usr/bin/gcc-4.2

      4. 同时使链接器可用:

        ln -s /usr/bin/g++-4.2 /Developer/usr/bin/g++-4.2

      这对我来说非常有效!但正如我所说,它仅适用于非 iOS 产品!

      【讨论】:

      • 这个选项出现了,但是你提到的可执行文件(例如/Developer/usr/bin/gcc-4.2)不存在。您是否从 4.1 升级到 4.2,因为它们似乎没有包含在全新的 4.2 安装中?
      • 显然,对于 Xocde 4.2 的全新安装(即不从 4.1 升级),您必须手动安装 gcc;例如“sudo 端口安装 apple-gcc42”
      • @SeanDeNigris:确切地说,我从 3.2.4 版本开始使用 Xcode 并从那时起不断更新。当时的项目不喜欢 LLVM GCC 4.2,游戏一直崩溃/没有声音。
      • 如果你很好奇,我更新了项目,以便它可以编译并与 LLVM 4.2 一起使用,因为将 GCC 4.2 支持添加到 Xcode 4.3 完全搞砸了,我不知道它是如何工作的:D
      【解决方案4】:

      简单实用的解决方案https://github.com/kennethreitz/osx-gcc-installer/ 它使stackoverflow上的声明列表自动化

      【讨论】:

        猜你喜欢
        • 2012-02-13
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多