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

标签 macos gcc fortran gfortran

自升级到优胜美地后,我无法使用 gfortran 进行编译。最初我收到“段错误 11”,然后我:

  1. http://hpc.sourceforge.net/ 更新到 gcc v.5.0
  2. 重新安装了 Xcode 命令行实用程序 v.6.1.1

完成上述操作后,我能够编译非常简单的 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

我还尝试用自制软件重新安装 gcc:

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

但是,当我询问“gcc --version”时,我得到的是 v.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

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

最佳答案

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

主要线索是尝试运行“brew upgrade gcc”时出现权限被拒绝错误。我在这里找到了解决方案: 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

在升级过程中,homebrew 返回一个错误,指出它无法完成升级,因为已经有一个现有的 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

关于macos - 为什么我升级到 OSX Yosemite 后不能用 gfortran 编译? gfortran 错误 : libgfortran. 规范:没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198444/

相关文章:

c - 读取未格式化文件的 Fortran 到 C 的翻译

linux - 在 Mac OS 上从用户输入的 perl 中获取文本时限制字符数

c - 递归程序中编译器的优化

c - POSIX sigevent 未使用 c11 进行编译

linux - Makefile 中的变量泄漏

pointers - 为什么 Fortran 指针总是可变的

macos - navigationBarTitle 适用于 iOS 而不是 MacOS 应用程序

ios - iOS 和 MacOS 之间通信的框架

objective-c - NSWindow 失去焦点时没有收到任何通知

fortran - Gfortran编译错误: Logicals at (1) must be compared with . eqv。而不是 ==