OSX - 将 gcc 版本 4.2.1 替换为通过 Homebrew 安装的 4.9

OSX - replace gcc version 4.2.1 with 4.9 installed via Homebrew

这个问题已经困扰我一段时间了。我正在尝试编译一个巨大的 C++ 文件(我知道它可以正常工作,因为它在我工作的 Arch Linux 计算机上运行良好)。当我在我的 mac 上检查我的 GCC 版本时,它 return 如下

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix

我还使用 Homebrew 安装了最新的 GCC 版本

brew install gcc49

我现在的问题是如何将新安装的 GCC 版本应用为终端使用的默认版本?

我还知道,当您使用 homebrew 来安装 gcc 时,它会将其命名为 gcc-49,这样包之间就不会混淆了。

我不知道如何用我安装的4.9版本替换XCode自带的4.2.1版本

谢谢

编辑: 切换到我的 mac 以获取 gcc --version

的完整 return 语句

编辑 2: 我的最终目标是能够导航到目录并能够键入

make
sudo make install

安装已经制作好的守护进程。现在 return 随机包和标准库有大量错误

OS X 没有安装 GCC(4.2.1 或其他)。 Clang 是默认的系统编译器,已经有一段时间了。当作为 GCC 调用时,它使用 4.2.1 中的 C++ headers。您是否尝试过使用 Clang 本机编译代码,而不是调用 "gcc"(调用 Clang)?它具有比 GCC 仿真模式更现代的 headers 和 C++ 支持。

默认情况下,homebrew 将其安装的软件包的可执行文件(二进制文件)放入 /usr/local/bin - 考虑到本地用户安装的二进制文件,这是一个非常明智的地方 - 比较到 /bin,其中包含属于核心 OS 的标准化二进制文件。因此,您的 brew 命令应该已将 gcc-4.9 安装到 /usr/local/bin 中。现在的问题是如何使用它...您有多种选择。

选项 1

如果你今天和明天只想编译一两个东西,然后可能不会再使用编译器,你还不如直接调用 homebrew 安装的 gcc像这样的路径:

/usr/local/bin/gcc-4.9 --version

选项 2

如果您要经常使用 gcc,每次都显式输入完整路径会有点烦人,因此您可以将以下内容放入 ~/.bash_profile

export PATH=/usr/local/bin:$PATH

然后启动一个新的终端,它会知道它需要查看 /usr/local/bin,因此您只需键入

就可以逃脱
gcc-4.9 --version

选项 3

如果您只想使用 gcc 调用编译器,而不用担心实际版本,您可以执行上面的选项 2 并另外创建一个符号 link 像这样

cd /usr/local/bin
ln -s  gcc-4.9  gcc

这样您就可以 运行 homebrew 安装的 gcc,只需在命令行中键入 gcc,就像这样

gcc --version

注:

如果你以后想安装,比如 gcc-4.13 或类似的,你会像以前一样安装 brew install,然后像这样更改符号 link:

cd /usr/local/bin
rm gcc               # remove old link from gcc to gcc-4.9
ln -s gcc-4.13 gcc   # make new link from gcc to gcc-4.13

请注意,如果您实际使用的是 C++ 而不是 C,则需要将上述 g++ 替换为 gcc.

下载 gcc 二进制文件解压并将 bin、lib include share 和 libexec 文件复制到您的 /usr 目录,然后键入 gcc --version 这是我希望您看到的内容

gcc --version gcc (GCC) 4.9.2 20141029(预发布) 版权所有 (C) 2014 Free Software Foundation, Inc. 这是免费软件;有关复制条件,请参阅来源。没有 保修单;甚至不是针对特定用途的适销性或适用性。

简单地将 ~/.bash_profile 中 $PATH 的顺序更新为 brew 安装版本 'export PATH=/usr/local/Cellar/gcc/5.1.0/bin:$PATH' 不足以为我进行切换

更改 ~./bash_profile (alias gcc='gcc-5') 中的别名有效,但可能会造成混淆,即 which gcc 将 return Clang 版本

对我有用的是在 brew gcc 目录中创建一个符号 link 并更新路径(上面的第 1 点)

cd /usr/local/Cellar/gcc/5.1.0/bin/gcc
ln -s gcc-5 gcc

现在 which gcc return正确的版本是 5.1.0