Brew更新后GCC停止工作

时间:2018-04-16 16:47:01

标签: macos gcc homebrew

我不知道这是否是正确的地方,所以如果我做错了,请告诉我。

我正在学习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

1 个答案:

答案 0 :(得分:0)

首先,您之前是否已从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目录是为User保留的,除非你通过自制程序或其他用户安装(上面已解决过)将它们放在那里,否则不会有任何gfortran符号链接。

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