计算科学中的大量软件包是用 Fortran 编写的,而且 Fortran 不会消失。构建其他软件包也需要 Fortran 编译器(一个值得注意的例子是SciPy)。
但是,Mac OS X 不包含 Fortran 编译器。我应该如何在我的机器上安装 Fortran 编译器?
计算科学中的大量软件包是用 Fortran 编写的,而且 Fortran 不会消失。构建其他软件包也需要 Fortran 编译器(一个值得注意的例子是SciPy)。
但是,Mac OS X 不包含 Fortran 编译器。我应该如何在我的机器上安装 Fortran 编译器?
选择你的毒药。我建议使用 Homebrew。除了“Fink”和“其他方法”之外,我已经尝试了所有这些方法。最初,当我写这个答案时,我更喜欢 MacPorts。从那以后的两年里,Homebrew 作为一个项目已经有了很大的发展,并且证明比 MacPorts 更易于维护,MacPorts 可能需要大量的PATH
黑客攻击。
如果您希望 gfortran 的版本与您机器上安装的 gcc、g++ 等版本相匹配,请从此处下载相应版本的 gfortran 。R 开发人员和SciPy 开发人员推荐这种方法。
/usr/bin
. 不会破坏现有的编译器。不需要编辑PATH
。/usr/bin
.HPC Mac OS X具有最新版本的 GCC(在撰写本文时为 4.8.0(实验性))的二进制文件,以及 g77 二进制文件和基于 f2c 的编译器。PETSc 开发人员在他们的FAQ中推荐了这种方法。
/usr/local
;最新。不会破坏现有的系统编译器或上述方法。不会干扰操作系统升级。PATH
。在版本之间切换没有简单的方法。(您可以修改 PATH,删除编译器安装,或围绕它进行安装。)将破坏其他安装编译器的方法,/usr/local
因为编译器二进制文件仅命名为“gcc”、“g++”等(没有版本号,也没有任何符号链接)。MacPorts有许多版本的编译器可供使用。
/opt/local
;port select
可用于在编译器版本(包括系统编译器)之间切换。不会干扰操作系统升级。PATH
. 可能会干扰 Homebrew 和 Fink 安装。(请参阅SuperUser 上的这篇文章。)Homebrew也可用于安装 Fortran 编译器。
/usr/local
以避免弄乱任何东西。可能会干扰 MacPorts 和 Fink 的安装。(请参阅SuperUser 上的这篇文章。)需要更改PATH
。安装可能依赖于系统库,这意味着 Homebrew 软件包的依赖关系可能会在操作系统升级时中断。(请参阅这篇文章。)我不希望在安装 gfortran 时存在系统库依赖关系,但在安装其他 Homebrew 软件包时可能存在此类依赖关系。理论上,你可以使用Fink来安装 gfortran。我没用过,也不知道有谁用过(并且愿意说些积极的话)。
GFortran wiki上列出了其他二进制文件和链接。上面已经列出了一些链接。其余安装方法可能与上述方法冲突,也可能不冲突;使用风险自负。
EasyBuild ( http://hpcugent.github.com/easybuild ) 允许您轻松构建和安装自己的 GCC 编译器集。
基本上,你给它一个简单的 easyconfig (.eb) 文件,指定你想要构建的内容(GCC + 版本 + 你想要编译器的语言集 + ...),然后构建和安装是一个单一的命令。我会说它有点像 Homebrew,但它给了你更多的自由。
此外,EasyBuild 支持许多其他(科学)软件包,可以使用单个命令构建和安装,因此值得研究。
免责声明:我是 EasyBuild 团队的一员。构建 GCC(包括 gfortran)应该可以在 OS X 上运行,但其他构建可能会很麻烦。我们正在努力,如果您遇到麻烦,请告诉我们。
我建议在 MacOS 上使用 Intel Fortran Composer。它很好,最新并且有效。一件消极的事情,它不是免费的。我认为有 30 天的免费评估。
在 Linux 下,他们提供免费的非商业版本。