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

siv*_*udh 5 macos homebrew gcc

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

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

aba*_*ert 3

首先,您确定需要 g++ 4.7 吗?从C++11 实现状态页面可以看到,最新版本的 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

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

编译代码时,不要g++编写/usr/local/bin/g++、 或g++-4.7.

如果您厌倦了这样做,请将/usr/local/binPATH 放在更高的位置/usr/bin,或者创建一个 shell 别名,或者将其粘贴到环境变量 CXX 中并写入$CXX而不是g++.

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


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

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

请再次记住,g++ 4.7 不支持 Mac 扩展,因此,如果您不准备调试一堆基于 autoconf 的配置脚本,抱怨您的编译器无法生成代码,因为它假设它可能会抛出-arch x86_64任何编译器在 Mac 等设备上,请勿执行此操作。