MacOS Big Sur下如何切换使用gcc@9替代gcc 10
嘿,我来帮你搞定Mac上切换GCC版本的问题,咱们一步步来解决:
你提到gcc@9已经在/usr/local/Cellar/gcc@9/9.3.0_1目录下,但brew ls --versions gcc只显示gcc 10.2.0_4,这是因为Homebrew里gcc(默认指向最新稳定版)和gcc@9是两个独立的Formula包。要查看gcc@9的具体版本,得用专门的命令:
brew ls --versions gcc@9
如果返回gcc@9 9.3.0_1,就说明它确实已经安装到位了。
根据你的需求(临时切换或永久生效),可以选下面任意一种方式:
方法1:用Homebrew链接切换(全局永久生效)
Homebrew会把当前激活的GCC版本链接到/usr/local/bin(系统优先搜索的路径)。要切换到gcc@9,先取消当前gcc 10的链接,再强制链接gcc@9:
# 先断开gcc 10的系统链接 brew unlink gcc # 强制链接gcc@9(因为是旧版本,Homebrew默认不会自动覆盖,所以需要--force) brew link gcc@9 --force
执行完后,马上验证一下:
gcc --version g++ --version
应该会显示gcc 9.3.0的版本信息了。如果之后想切回gcc 10,反向操作就行:
brew unlink gcc@9 brew link gcc --force
方法2:临时别名(仅当前终端会话生效)
如果只是临时想用gcc@9,不想修改全局设置,直接在当前终端里设置别名就行:
alias gcc='gcc-9' alias g++='g++-9'
这样在这个终端里输入gcc就会调用gcc@9,关闭终端后别名就失效了,不会影响其他会话。
方法3:永久别名/修改PATH(用户级永久生效)
如果想让gcc@9成为你默认的GCC版本,可把别名加到shell配置文件里:
- 如果你用的是Mac默认的Zsh,编辑
~/.zshrc - 如果你用Bash,编辑
~/.bash_profile或~/.bashrc
打开对应的文件,添加以下内容:
alias gcc='gcc-9' alias g++='g++-9'
保存后,执行source ~/.zshrc(对应你的配置文件)让修改立即生效,之后每次打开终端都会自动应用这个别名。
另一种方式是直接把gcc@9的bin目录加到PATH最前面,让系统优先找到它:
echo 'export PATH="/usr/local/Cellar/gcc@9/9.3.0_1/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
这种方式不需要设置别名,系统会直接优先调用gcc@9的gcc和g++命令。
不管用哪种方法,最后都可以用这两个命令确认是否成功:
# 查看当前gcc的路径 which gcc # 查看当前gcc版本 gcc --version
如果输出显示的是gcc 9.3.0的信息,就说明切换成功啦!
内容的提问来源于stack exchange,提问作者CAF

