升级到OSX Yosemite后,为什么我不能用gfortran编译? gfortran错误:libgfortran.spec:没有这样的文件或目录

时间:2015-01-28 17:20:29

标签: macos gcc fortran gfortran

自升级到优胜美地后,我无法使用gfortran进行编译。最初我得到了#34;分段故障11"然后我:

  1. 已从http://hpc.sourceforge.net/
  2. 更新为gcc v.5.0
  3. 重新安装Xcode命令行实用程序v.6.1.1
  4. 完成上述操作后,我可以编译非常简单的fortran程序,但是我运行的代码越复杂,就会出现以下错误:

     gfortran: error: libgfortran.spec: No such file or directory
    

    但事实上,libgfortran.spec文件位于/ usr / local / lib

     ls /usr/local/lib | grep gfortran
    
     libgfortran.3.dylib
     libgfortran.a
     libgfortran.dylib
     libgfortran.la
     libgfortran.spec
    

    所有gcc二进制文件都位于/ usr / local / bin

     which gfortran
    
     /usr/local/bin/gfortran
    

    我的道路似乎没问题

     echo $PATH
     /usr/local/lib:/usr/local/bin:/usr/local:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/lib:/usr/texbin:/Users/MattCooper/bin:/Applications/MRT/bin
    

    我还尝试用homebrew重新安装gcc:

     brew install gcc
     Error: gcc-4.9.2 already installed
     To install this version, first 'brew unlink gcc'
    

    然而,当我问到' gcc --version'时,我得到的是5.0;

     gcc --version
     gcc (GCC) 5.0.0 20141005 (experimental)
    

    当我尝试取消链接或使用自制程序升级gcc时,我收到了一个权限被拒绝错误:

     brew unlink gcc
     Unlinking /usr/local/Cellar/gcc/4.9.2... Error: Permission denied - /usr/local/bin/c++-4.9
    

    类似地

     brew upgrade gcc
     Permission denied - /usr/local/bin/c++-4.9
    

    最后

     which gcc
     /usr/local/bin/gcc
    

    请帮忙。非常感谢提前。请让我知道我忘记包含的内容。

2 个答案:

答案 0 :(得分:4)

我最终通过自制软件解决了这个问题。我无法确定问题的确切来源,但这与我从http://hpc.sourceforge.net/安装gcc v4.9,然后我重新安装和/或使用自制软件更新gcc的方式有关。然后,升级到优胜美地后,我从http://hpc.sourceforge.net/安装了gcc v5。在该进程中的某个位置,/ usr / local / bin和usr / local / lib中的二进制文件未正确链接。

主要线索是尝试运行'brew upgrade gcc'时出现Permission Denied错误。我在这里找到了一个解决方案: Brew doctor says: "Warning: /usr/local/include isn't writable."

要修复,我用过:

 brew doctor

返回了一堆不可写的目录,例如usr / local / lib,因此brew无法将gcc升级到v5.0并链接所有内容。

我经历并发布:

 sudo chown -R $USER /usr/local

并为'brew doctor'返回的所有其他不可写目录执行此操作。然后,我能够使用brew来升级gcc:

 brew upgrade gcc

在ugrade期间,自制软件返回了一个错误,表明它无法完成升级,因为已经存在一个现有的gfortran文件:

 /usr/local/bin/gfortran

要修复,自制软件建议我运行:

 brew -link gcc

此时一切正常。有趣的(对我而言,因为我并不完全理解所有这一切)当我要求brew清理时,我得到:

 brew cleanup
 Warning: Skipping (old) /usr/local/Cellar/gcc/4.9.2 due to it being linked

这里有一些类似的信息:How to link to a new gcc version with brew?

与该用户相似,当我查看我的酒窖时,我发现两个版本的gcc,但我不确定我是否需要两个版本

 ls /usr/local/Cellar/gcc
 4.9.2 4.9.2_1

答案 1 :(得分:0)

我遇到了类似问题的类似问题。它找不到这个文件:

gfortran: error: libgfortran.spec: No such file or directory

所以我的问题是我通过hpc.sourceforge.net和homebrew安装了gcc。我不得不卸载自制软件

brew uninstall gcc

然后我不得不从hpc.sourceforge.net重新安装gcc

sudo tar -xvf gcc-4.9-bin.tar.gz -C /

当我想使用Yosemite从hpc.sourceforge.net恢复为gcc 4.9时,这对我有用。