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

Dac*_*tah 35 c++ macos homebrew gcc

这一直困扰着我一段时间.我正在尝试编译一个巨大的C++文件(我知道它可以工作,因为它在我工作的Arch Linux计算机上工作正常).当我在我的Mac上检查我的GCC版本它返回以下内容

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
Run Code Online (Sandbox Code Playgroud)

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

brew install gcc49
Run Code Online (Sandbox Code Playgroud)

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

我也知道当你使用自制软件isntall gcc时,它将它命名为gcc-49,这样包之间就不会混淆了.

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

谢谢

编辑:切换到我的mac以获取gcc --version的完整返回语句

编辑2:我的最终游戏是能够导航到目录并能够输入

make
sudo make install
Run Code Online (Sandbox Code Playgroud)

安装已制作的守护进程.现在,随机包和标准库返回大量错误

Mar*_*ell 57

默认情况下,homebrew将其安装的软件包的可执行文件(二进制文件)置于/usr/local/bin其中 - 这是本地用户在您考虑它时安装的二进制文件的一个非常明智的地方 - 相比之下,/bin属于核心操作系统的标准化二进制文件.所以,你的brew命令应该安装gcc-4.9/usr/local/bin.问题是现在如何使用它...你有几个选择.

选项1

如果你只想在今天和明天编译一两件事,然后可能不再使用编译器,你也可以用这样的完整路径调用gcc安装的homebrew:

/usr/local/bin/gcc-4.9 --version
Run Code Online (Sandbox Code Playgroud)

选项2

如果你要使用gcc相当多,那么每次明确输入完整路径都会有点令人讨厌,所以你可以将以下内容放入你的~/.bash_profile

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

然后启动一个新的终端,它会知道它需要查看/usr/local/bin,所以你只需输入就可以逃脱

gcc-4.9 --version
Run Code Online (Sandbox Code Playgroud)

选项3

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

cd /usr/local/bin
ln -s  gcc-4.9  gcc
Run Code Online (Sandbox Code Playgroud)

这将允许您通过简单地在命令行键入来运行homebrew-installed ,就像这样gccgcc

gcc --version
Run Code Online (Sandbox Code Playgroud)

注意:

如果你以后想要安装,说gcc-4.13或者某些,你会brew install像以前一样做,然后像这样更改符号链接:

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
Run Code Online (Sandbox Code Playgroud)

  • 设置符号链接后,我建议关闭终端并打开一个新终端,然后写入 gcc -v。Mac osx 在旧终端窗口中显示没有任何变化。 (2认同)

小智 8

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

更改〜./ bash_profile(alias gcc='gcc-5')中的别名有效,但可能会令人困惑,即which gcc会返回Clang版本

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

cd /usr/local/Cellar/gcc/5.1.0/bin/gcc
ln -s gcc-5 gcc
Run Code Online (Sandbox Code Playgroud)

现在which gcc返回正确的版本5.1.0