Mac High Sierra下gcc与gcc-4.9输出不一致问题咨询
我来帮你理清这个困惑~首先你遇到的核心问题是:Mac系统默认把gcc命令指向了clang,这是苹果为了兼容做的设置,所以你直接敲gcc -v看到的其实是clang的输出,而gcc-4.9 -v才是你通过Homebrew安装的GCC 4.9的真实信息。下面一步步帮你解决:
为什么gcc和gcc-4.9输出不同?
Mac自带的/usr/bin/gcc其实是一个符号链接,指向了苹果的clang编译器(可以用ls -l /usr/bin/gcc查看)。而你通过Homebrew安装的gcc 4.9会被放在/usr/local/bin目录下,命名为gcc-4.9,所以直接敲gcc时,系统优先找到了系统默认的那个“假gcc”(clang),而非你装的GCC 4.9。
如何把GCC 4.9设为默认?
这里有两种可靠的方法,选一种适合你的就行:
方法一:调整PATH环境变量(推荐)
Homebrew安装的软件默认都在/usr/local/bin,我们只需要让这个目录的优先级高于系统默认的/usr/bin,这样系统找命令时会先找/usr/local/bin里的:
- 打开你的shell配置文件:如果你用的是bash,编辑
~/.bash_profile;如果是zsh,编辑~/.zshrc。 - 在文件末尾添加一行:
export PATH="/usr/local/bin:$PATH" - 保存文件后,执行命令让配置生效:
source ~/.bash_profile # bash用户 # 或者 source ~/.zshrc # zsh用户
方法二:创建符号链接
直接把gcc-4.9链接成gcc,放在/usr/local/bin里(这个目录的优先级本来就比/usr/bin高,所以系统会优先找到它):
- 先确认
gcc-4.9的路径,执行:
一般输出会是which gcc-4.9/usr/local/bin/gcc-4.9。 - 创建符号链接:
如果提示权限问题,前面加ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gccsudo。
验证是否生效
执行gcc -v,现在输出应该和gcc-4.9 -v完全一致了。你也可以用which gcc查看,输出应该是/usr/local/bin/gcc,而不是/usr/bin/gcc。
关于which命令的小补充:它会在你的PATH路径列表里,从前往后查找第一个匹配的命令路径,所以只要/usr/local/bin在PATH的前面,或者你在/usr/local/bin里创建了gcc的符号链接,它就会指向你想要的GCC 4.9啦。
内容的提问来源于stack exchange,提问作者Asker

