在Mac上从llvm-g ++ - 4.2升级到g ++ - 4.7的正确方法

时间:2012-05-28 15:01:05

标签: macos gcc homebrew

我安装了命令行工具Lion 10.7.3。我想尝试使用C ++ 11,所以我使用自制软件来安装GCC 4.7,如文档here所述。

我现在如何将/ usr / bin / g ++升级为Homebrew安装的?是否像symlinking一样简单?我只想仔细检查并确认。谢谢!

1 个答案:

答案 0 :(得分:3)

首先,你确定你需要g ++ 4.7吗?正如您在C++11 implementation status页面中看到的,最新版本的clang也支持大多数C ++ 11。当然还有g ++处理和clang没有的东西,但是仍然有clang支持的东西,g ++没有。而且,更重要的是,您已经拥有来自Apple的最新版本的clang,已配置并准备好作为您的默认编译器。另外,4.2之后的g ++不支持Mac扩展,例如-arch,这意味着你不能用它来构建大量的第三方软件(因为大多数配置脚本假设你是在Mac上,您的编译器支持Mac扩展。)


但如果你想要g ++ 4.7,你就可以做到。只是不试图用不同的版本替换/usr/bin/g++。永远不要将/usr/bin(或/System)中的任何内容替换为非Apple内容,除非是在一些非常罕见的情况下(当您从知道他们正在谈论的内容的人那里得到强烈的保证时)。

更好的做法是并行安装另一个编译器。让Homebrew安装它最喜欢的方式(所以它安装到一些前缀,如/usr/local/Cellar/gcc/4.7,然后将所有适当的东西符号链接到/ usr / local / bin等),并以这种方式使用它。

编译代码时,请写g++/usr/local/bin/g++,而不是撰写g++-4.7

如果您厌倦了这样做,请将/usr/local/bin放在/usr/bin的PATH上,或者创建一个shell别名,或者将其粘贴在环境变量CXX中并写入$CXX代替g++

如果您使用的是GUI IDE,则应该可以通过在某处设置路径来配置它以使用编译器。 (除非您使用的是Xcode,您只能将其配置为与Apple测试的编译器配合使用。)


这就是您尝试使用自己的代码所需的全部内容。如果要使用此编译器编译第三方应用程序,可能会更复杂一些。您实际上并不经常编译每个源文件并将结果链接在一起;你只需做configure && make让他们为你做繁重的工作。

幸运的是,大多数软件包都会遵循标准环境变量,特别是CXX用于指定默认C ++编译器,CC用于默认C编译器。 (这就是为什么我建议上面的名字CXX。)

请记住,再次,g ++ 4.7不支持Mac扩展,所以如果你不准备调试一堆基于autoconf的配置脚本抱怨你的编译器无法生成代码,因为它认为它可以抛出在Mac上的任何编译器等-arch x86_64都不要这样做。