如何在OSX上更新g++编译器

16

我尝试使用这个教程下载最新版的 g++,并将版本号从 4.7 更改为最新的版本(我相信是)8.1。但我遇到了以下错误。

Error: No available formula with the name "gcc81"
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

有人知道如何更新我的g++版本吗?这是我尝试查找当前版本时得到的信息。

g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

抱歉我太菜了,在这里真的很努力学习。


我对homebrew不是很了解,但似乎你没有安装任何gcc。当你运行g++时得到的实际上是苹果安装的clang++编译器。这是苹果做的一个奇怪的事情,将g++别名。所以你不需要“升级”而是“安装”。无论如何,如果你尝试brew install gcc,没有指定版本,会发生什么? - juanchopanza
我认为你现在试图在OSX上使用gcc可能会逆势而行 - 苹果正在努力推动人们转向clang。你为什么需要它? - Paul Sanders
7
使用Homebrew安装gcc 8的命令为brew install gcc。您可以使用brew search gcc查找选项,使用brew info gcc确定gcc包中提供的版本。为了防止Homebrew安装的gcc与Mac自带的gcc发生冲突,Homebrew在所有文件名后面加上“-8”的后缀,因此通过gcc-8调用gcc,通过g++-8调用g++。因此,如果您正在使用makefile,则应设置环境变量CC=gcc-8 CXX=g++-8。这些变量应该会传递到makefile或配置脚本中。 - Anya Shenanigans
1个回答

11

我知道这篇文章有点旧了,但我可以为你解决如何完成这个任务的问题。

首先,要使用Homebrew安装gcc/g++,您应该使用上面评论中提到的以下命令:brew install gcc

完成后,Homebrew应将已安装的二进制文件/符号链接放置在正确的文件夹中。

为了正确设置mac上的gcc/g++命令以使用刚刚下载的版本,我通过不更改符号链接gcc/g++而是在我的shell环境中为gccg++创建别名来实现此目的。

alias gcc='gcc-10'
alias g++='g++-10'

使用 Homebrew 下载了 gcc-10g++-10,Homebrew 会将它们放在 /usr/local/bin 目录下(该目录在路径中),并且允许您创建一个别名,指向由 Homebrew 安装的常规 gcc/g++ 命令对应的版本。

之后,运行命令 g++ --version 应该会给出以下结果:

g++-10 (Homebrew GCC 10.2.0) 10.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

根据您使用的Shell类型,您可能需要重新启动终端或运行source ~/.bashrc


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接