更新OSX上的GCC

所以我是一个新的程序员,我只是在我的Macbook上安装了XCode来获取GCC。 我认为Xcode是在OSX上获得GCC的唯一方法。 现在,当我运行我的Hello World应用程序时,在C ++中,g ++出现了,它是版本4.0.1,但是当我查找以g开头的命令时,我还会看到g ++ – 4.2。 有什么办法使4.2默认,而不是4.0.1,也有办法更新到最新版本4.4.0的gcc?

编辑:好吧,所以我安装了macports并安装了gcc4.4,它显示在terminal上作为gcc-mp-4.4,我怎么让它默认与gcc_select,就像什么是命令和东西。 谢谢。

如果你安装了macports你可以安装gcc select,然后select你的gcc版本。

/opt/local/bin/port install gcc_select 

看你的版本使用

 port select --list gcc 

select一个版本使用

 sudo port select --set gcc gcc40 

我知道这是一个旧的要求。 但是它对一些人来说可能还是有用的。 使用当前版本的MacPorts,您可以使用port命令select默认的gcc版本。 要列出可用的gcc版本,请使用:

$ sudo port select –list gcc

 Available versions for gcc: gcc42 llvm-gcc42 mp-gcc46 none (active) 

要将gcc设置为MacPorts版本,请执行以下操作:

$ sudo port select –set gcc mp-gcc46

我只是说,使用软链接来实现这一点是一个可怕的,不好的,可怕的想法。

编写软件的关键之一是可重复性 – 您希望每次都能得到相同的结果。 这些系统非常复杂,你想减less所有看不见的错误。

有一个软链接是一个看不见的错误的来源。 这是你在一个月内会忘记的东西,然后转移到另一台机器上,并想知道为什么你会得到不同的结果 – 或者,你会尝试升级你的系统,你会得到奇怪的错误,因为它不是期待那里的软链接。

而且,这并不能保证能够正常工作 – 尤其是,你不清楚你会得到正确的系统包含文件,这在gcc的迭代之间肯定会改变。

gcc_select是一种系统的方法,可以预测地工作,或者在最糟糕的情况下,您可以提交错误报告,并得到最终修复或自行修复。

不幸的是:(gcc_select不影响XCode使用哪种编译器,所以如果你需要在XCode中工作的话,这不是一个好办法,我仍然不知道这是怎么回事。

使用“gcc_select -l”

> gcc_select -l

gcc40 mp-gcc44

> gcc_select mp-gcc44

/usr/bin

sudo ln -s -f g++-4.2 g++

sudo ln -s -f gcc-4.2 gcc

这应该做到这一点。

下面的配方使用Homebrew为我工作更新到gcc / g + + 4.7:

 $ brew tap SynthiNet/synthinet $ brew install gcc47 

在这里find一个职位。

你可以在你的机器上有多个版本的GCC来select你想要使用的那个,用完整的path来调用它,比如/usr/bin/g++在命令行上使用完整path/usr/bin/g++ (取决于gcc所在的地方)。

编译项目取决于你使用的是什么系统,我不确定Xcode(我对默认的atm很满意),但是当你使用Makefile时,你可以设置GXX = / usr / bin / g ++等等。

编辑

现在有一个xcrun脚本,可以查询在Mac上select合适版本的构build工具。 除了man xcrun以外,我已经使用了关于xcode和命令行工具的解释,这些工具几乎总结了如何使用它。

无论苹果作为xcode中的默认gcc(在10.6,4.0.1之前的4.2.1版本)上,苹果公司和用于在OS X上构build软件的“标准”都得到了很好的testing(和维护)。其他一切都不是,所以如果你想开发软件,或者是gcc / OS X betatesting者,请三思。