5

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

我现在如何将 /usr/bin/g++ 升级为 Homebrew 安装的那个?它像符号链接一样简单吗?我只是想仔细检查并确定。谢谢!

4

1 回答 1

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++用不同的版本替换。除非在极少数情况下(当您从知道他们在说什么的人那里得到强有力的保证时),否则永远不要用非 Apple 的东西替换/usr/bin(或)中的任何内容。/System

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

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

如果您厌倦了这样做,/usr/local/bin请将 PATH 放在更高的位置/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 等设备上,不要这样做。

于 2013-04-25T01:57:39.697 回答