Why can't I compile with gfortran after upgrading to OSX Yosemite? gfortran error: libgfortran.spec: No such file or directory
Why can't I compile with gfortran after upgrading to OSX Yosemite? gfortran error: libgfortran.spec: No such file or directory
自升级到 Yosemite 后,我无法使用 gfortran 进行编译。最初我得到 "segmentation fault 11",然后我:
- 已从 http://hpc.sourceforge.net/
更新到 gcc v.5.0
- 重新安装 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/, then somewhere along the way I re-installed and/or updated gcc with homebrew. Then, after upgrading to Yosemite, I installed gcc v5 from http://hpc.sourceforge.net/ 安装 gcc v4.9 这一事实有关。在该过程中的某个地方,/usr/local/bin 和 usr/local/lib 中的二进制文件未正确 linked。
主要线索是尝试 运行 'brew upgrade gcc' 时出现权限被拒绝错误。我在这里找到了解决方案:Brew doctor says: "Warning: /usr/local/include isn't writable."
为了修复,我使用了:
brew doctor
返回了一堆不可写的目录,例如 usr/local/lib,因此 brew 无法将 gcc 升级到 v5.0 和 link 所有内容。
我通过并发布了:
sudo chown -R $USER /usr/local
并对 'brew doctor' 返回的所有其他不可写目录执行此操作。然后,我可以使用 brew 升级 gcc:
brew upgrade gcc
在升级过程中,自制软件返回了一个错误,表明它无法完成升级,因为已经有一个现有的 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
我遇到了类似解决方案的类似问题。找不到此文件:
gfortran: error: libgfortran.spec: No such file or directory
所以我的问题是我通过 hpc.sourceforge.net 和自制软件安装了 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 时,这对我有用
自升级到 Yosemite 后,我无法使用 gfortran 进行编译。最初我得到 "segmentation fault 11",然后我:
- 已从 http://hpc.sourceforge.net/ 更新到 gcc v.5.0
- 重新安装 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/, then somewhere along the way I re-installed and/or updated gcc with homebrew. Then, after upgrading to Yosemite, I installed gcc v5 from http://hpc.sourceforge.net/ 安装 gcc v4.9 这一事实有关。在该过程中的某个地方,/usr/local/bin 和 usr/local/lib 中的二进制文件未正确 linked。
主要线索是尝试 运行 'brew upgrade gcc' 时出现权限被拒绝错误。我在这里找到了解决方案:Brew doctor says: "Warning: /usr/local/include isn't writable."
为了修复,我使用了:
brew doctor
返回了一堆不可写的目录,例如 usr/local/lib,因此 brew 无法将 gcc 升级到 v5.0 和 link 所有内容。
我通过并发布了:
sudo chown -R $USER /usr/local
并对 'brew doctor' 返回的所有其他不可写目录执行此操作。然后,我可以使用 brew 升级 gcc:
brew upgrade gcc
在升级过程中,自制软件返回了一个错误,表明它无法完成升级,因为已经有一个现有的 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
我遇到了类似解决方案的类似问题。找不到此文件:
gfortran: error: libgfortran.spec: No such file or directory
所以我的问题是我通过 hpc.sourceforge.net 和自制软件安装了 gcc。我不得不卸载自制版本
brew uninstall gcc
然后我不得不从 hpc.sourceforge.net
重新安装 gccsudo tar -xvf gcc-4.9-bin.tar.gz -C /
当我想使用 Yosemite.
从 hpc.sourceforge.net 恢复到 gcc 4.9 时,这对我有用