【问题标题】:Why do these two commands give different gcc versions on my Mac?为什么这两个命令在我的 Mac 上给出不同的 gcc 版本?
【发布时间】:2025-06-23 21:30:02
【问题描述】:

我在 Mac High Sierra 上安装了 gcc(因为我需要使用一些软件)。我被要求检查我的 gcc 是否已更新,以便安装上述软件。经过一番搜索,我找到了this命令找到它 -

gcc -dumpversion | cut -f1,2,3 -d.

这给出了 4.2.1 的输出。

当我尝试运行 brew install gcc 时,它却显示 -

错误:gcc 8.2.0 已安装 要升级到 8.3.0,请运行 brew upgrade gcc

我不明白为什么这两个命令会安装不同版本的 gcc,以及在我尝试安装软件时实际上可以使用这两个命令中的哪一个。任何帮助将不胜感激!

【问题讨论】:

    标签: gcc homebrew


    【解决方案1】:

    路径!

    第一个是从 XCode 运行 /usr/bin/gcc,它提供了 GCC 4.2.1 版本。第二个是运行brew 安装它的版本。您需要修复您的 PATH,以便 Brew (HomeBrew) bin 目录在您的 PATH 上位于 /usr/bin 之前。我think 那是/usr/local/bin,但你可能有不同的位置。 (我倾向于在奇怪的位置安装东西;参考/usr/local/Homebrew/bin/usr/local/Cellar 可能对您没有帮助。)

    无论安装在何处,请确保该目录位于您的PATH 上,位于/usr/bin 目录之前。这可能涉及入侵您的~/.profile 文件或~/.bashrc – 再次取决于您的设置方式。如果您使用tcsh,则需要编辑的是~/.login~/.cshrc

    您可能还会发现/usr/libexec/path_helper 很有帮助;查看它的手册页 (man path_helper) 以了解如何修改其默认配置。请注意如何执行此操作,并进行备份和测试(bash -l 模拟登录)。

    【讨论】:

    • 嗨乔纳森,我确实将我的 .bash_profile 更改为包含 export PATH="/usr/local/bin:$PATH" export PATH="/usr/bin:$PATH",并激活了更改,但在运行 gcc -dumpversion | cut -f1,2,3 -d. 时,它仍然给我 4.2.1,在运行 which gcc 时,它仍然给我/usr/bin/gcc。有什么想法可能会出错吗?我确实在终端的新实例上尝试了所有这些
    • 可能是hash -r?也许通过完整路径名运行这两个变体,看看它们确实报告了不同的版本。
    • 我也尝试将alias gcc='/usr/local/bin/gcc-8' 添加到.bash_profile,但这也不起作用。我对hash -r 有点犹豫,因为它会让它忘记所有记住的位置,但如果没有其他选择,我会这样做。不太明白你的第二个陈述是什么意思
    • 我的个人资料中只有一个别名,而 bashrc 基本上是空的。我不喜欢别名引起的混乱。如果我需要它,它是一个脚本。我有数百个。字面上地! (我的私人 bin 目录中有超过 500 个程序和脚本。)如果您无法获得工作路径,请将符号链接 gcc-4/usr/bin/gccgcc-8/usr/local/bin/gcc 并使用后缀名称。或者类似的东西。
    • 如果您仍然遇到问题,则需要大量数据才能找出问题所在 - 目录中的文件列表(至少是名称与 @987654350 匹配的文件) @) 和环境,并确保正确导出修改后的 PATH,等等。最相关的目录是/usr/bin/usr/local/bin。一旦被发现,它就会变得很小、很傻、很明显(但在被发现之前会很神秘)。如果你真的被卡住了,请通过电子邮件与我联系——查看我的个人资料。请附上此问题的链接,以确定主题是关于什么的。