如何在Xcode 4.2中使用gcc 4.2

时间:2011-10-16 18:18:50

标签: iphone ios4 xcode4.2 gcc-4.2

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

由于

4 个答案:

答案 0 :(得分:4)

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

  

此过程中没有文件或目录被删除已删除,因此如果您将来需要使用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 :(得分:1)

感谢chown分享这个!我挣扎了大约半天,但最后结果证明,我只需要几个步骤来实现我的目标:

对于每个只需要GCC-4.2来编译应用程序的人(没有iOS内容),这很简单: 您只需按照以下几个步骤安装即可:

  1. 编辑:如果您尚未安装GCC 4.2(从早期版本的Xcode或手动安装),请在评论中按照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

  5. 这对我来说非常合适!但正如我所说,这只适用于非iOS产品!

答案 2 :(得分:1)

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

  1. 安装gcc 4.2

    sudo port install apple-gcc42
    
  2. 调整Xcode,使gcc 4.2作为编译器选项出现,编辑Xcode 4.2 GCC 4.2.xcspec文件,使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;
      

      To This:

      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
    
  4. 我解释了this blog post中的问题和解决方法,它浓缩了我发现的信息。随意评论。

答案 3 :(得分:0)

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