【问题标题】:GCC stopped working after brew updatebrew 更新后 GCC 停止工作
【发布时间】:2018-04-16 16:47:01
【问题描述】:

我不知道这里是否适合提问,所以如果我做错了什么,请告诉我。

我正在学习 c 编程,我正在尝试设置 git,因为我也想学习它。我遵循了一些说明,git 似乎工作正常,但现在每当我输入一些 gcc 命令时都会出错。

我是整个终端的新手,并尝试了一些我在 stackoverflow 上找到的命令,但这并没有解决我的问题。

我在尝试编译 C 程序后收到以下消息:

dyld: Library not loaded: /usr/local/lib/libmpfr.4.dylib Referenced 
from: /usr/local/libexec/gcc/x86_64-apple-darwin15.0.0/6.1.0/cc1 
Reason: image not found
gcc: internal compiler error: Abort trap: 6 (program cc1)

运行 'brew doctor' 后,我还得到以下输出:

Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked 
can lead to build-trouble and cause brews that depend on those kegs to 
fail to run properly once built. Run brew link on these: gawk

Warning: Homebrew's sbin was not found in your PATH but you have 
installed formulae that put executables in /usr/local/sbin. Consider 
setting the PATH for example like so echo 'export 
PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile

gcc 也是我与“brew link gcc”链接的未链接小桶的一部分,它最初给出了一些错误消息,但在从 SE 运行命令后它起作用了。

如果我运行“gcc --version”,我会得到通常的输出(gcc 版本 6.1.0)。

任何帮助将不胜感激,因为我渴望继续编程,这有点破坏了我平静的编码之夜:(

谢谢。

编辑:恢复备份后,$brew update $brew upgrade:

==> Pouring gcc-7.3.0_1.high_sierra.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/gfortran
Target /usr/local/bin/gfortran
already exists. You may want to remove it:
  rm '/usr/local/bin/gfortran'

To force the link and overwrite all conflicting files:
  brew link --overwrite gcc

To list all files that would be deleted:
  brew link --overwrite --dry-run gcc

Possible conflicting files are:
/usr/local/bin/gfortran

【问题讨论】:

  • sbin 放回PATH 时会发生什么?
  • 嘿斯里尼,谢谢,正如我所说我很新,所以我导出 PATH=$PATH:/usr/local/sbin 然后 brew reinstall gcc,但我仍然收到相同的消息.
  • Homebrew 在添加后仍然抱怨sbin 不在PATH 上?
  • 这个问题没有解决,谢谢!但 gcc 仍然无法正常工作
  • 我在尝试更新 gcc 时做了 rm '/usr/local/bin/gfortran' 这会导致错误吗?

标签: macos gcc homebrew


【解决方案1】:

首先,您之前是否从 Homebrew 以外的来源安装了 gcc?其次,您的自制软件仓库是最新的(brew update)吗?

如果您在安装了命令行工具的 Mac 上运行 gcc --version,应返回 Xcode 提供的 Apple gcc 版本,即 4.2.1。为了防止冲突,自制程序将其 gcc 链接到 gcc-x,其中 x 是当前的主要版本。这就是为什么我想知道您的自制软件仓库是否已过期,因为当前的自制软件 gcc 版本是 7(例如,gcc-7 --version)。

如果您之前安装了非自制 gcc,您可能会有指向该安装的符号链接,这可能会返回 gcc 版本 6.1.0。如果是这种情况,您最好的选择是使用从您获得它的任何地方可用的适当卸载方法来删除非自制 gcc 版本 6.1.0。现在 /usr/local/bin 中应该没有冲突的 gfortran 符号链接,并且从更新的存储库重新安装 homebrew gcc 应该不会出错。

如果您从未安装过非自制 gcc,那么按照错误说明中关于删除旧符号链接的指示,这样做应该是安全的。这是因为 /usr/local 目录是为用户保留的,并且不会有任何 gfortran 符号链接,除非您通过自制软件或其他用户安装(上面已解决)将它们放在那里。

您可能还想检查brew prune -h,这也可能解决您的一些问题。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多