如何在Mac上安装Fortran编译器?(OS X 10.x,x> = 4)


25

相关问题:科学计算和HPC中Mac OS的状态

计算科学中的大量软件包都是用Fortran编写的,并且Fortran并没有消失。还需要Fortran编译器来构建其他软件包(一个值得注意的示例是SciPy)。

但是,Mac OS X不包括Fortran编译器。我应该如何在计算机上安装Fortran编译器?


1
它不仅是Fortran。Mac根本没有像Debian这样的高质量受支持的存储库,一切都可以正常运行。在Mac上安装几乎所有复杂的东西都是一件痛苦的事情。
stali 2012年

Answers:


32

选择你的毒药。我建议使用自制软件。我尝试了所有这些方法,除了“ Fink”和“其他方法”。最初,当我编写此答案时,我更喜欢MacPorts。自那以来的两年中,Homebrew作为一个项目发展了很多,并且比MacPorts更具可维护性,MacPorts可能需要大量的PATH黑客操作。

安装与系统编译器匹配的版本

如果要使gfortran的版本与计算机上安装的gcc,g ++等的版本匹配,请从此处下载适当的gfortran版本。在[R开发商SciPy的开发者推荐这种方法。

  • 优点:与XCode或Kenneth Reitz的安装程序安装的编译器版本匹配;不太可能干扰操作系统升级;由于MacPorts可以安装到,因此可以与MacPorts(可能还有Fink和Homebrew)很好地共存/usr/bin。不破坏现有的编译器。不需要编辑PATH
  • 缺点:编译器堆栈真的很旧。(GCC 4.2.1是最新的Apple编译器;它于2007年发布。)安装到/usr/bin

从HPC Mac OS X安装预编译的最新二进制文件

HPC Mac OS X具有最新版GCC的二进制文件(在撰写本文时为4.8.0(试验)),以及g77二进制文件和基于f2c的编译器。PETSc开发人员在其FAQ中推荐此方法。

  • 优点:用正确的命令安装在/usr/local;最新。不破坏现有的系统编译器或上述方法。不会干扰操作系统升级。
  • 缺点:需要编辑PATH。没有简单的方法可以在版本之间进行切换。(您可以修改PATH,删除编译器安装或在其周围浪费时间。)将破坏其他安装编译器的方法,/usr/local因为编译器二进制文件仅被命名为'gcc','g ++'等(不带版本号,而没有任何符号链接)。

使用MacPorts

MacPorts有许多可用的编译器版本。

  • 优点:安装在/opt/local; port select可用于在编译器版本(包括系统编译器)之间切换。不会干扰操作系统升级。
  • 缺点:安装端口往往需要整个“软件生态系统”。编译器不包含调试符号,这在使用调试器或安装PETSc时可能会引起问题。(Sean Farley提出了一些解决方法。)还需要进行更改PATH。可能会干扰Homebrew和Fink的安装。(请参阅SuperUser上的这篇文章。)

使用自制

Homebrew也可以用于安装Fortran编译器。

  • 优点:易于使用的软件包管理器;安装与“安装与系统编译器匹配的版本”中相同的Fortran编译器。仅安装所需的设备(与MacPorts相反)。可以使用备用存储库homebrew-dupes安装更新的GCC(4.7.0)堆栈。
  • 缺点:继承了“安装与系统编译器匹配的版本”的所有缺点。在安装其他(非Homebrew)软件时,可能需要遵循Homebrew范例,/usr/local以避免造成混乱。可能会干扰MacPorts和Fink的安装。(请参阅有关SuperUser的帖子。)需要更改PATH。安装可能取决于系统库,这意味着Homebrew软件包的依赖关系可能会在操作系统升级时中断。(请参阅本文。)我不希望在安装gfortran时存在系统库依赖性,但是在安装其他Homebrew软件包时可能会存在此类依赖性。

使用芬克

从理论上讲,您可以使用Fink安装gfortran。我没有使用过它,而且我不认识任何人(并且愿意说些积极的话)。

其他方法

其他二进制文件和链接在GFortran Wiki上列出。上面已经列出了一些链接。其余安装方法可能会或可能不会与上述描述冲突;使用风险自负。


曾经有一段时间Fink是MacPorts首选的软件包管理器。几年前我停止使用它,因为堆栈很旧并且没有维护,并且不包含我经常使用的许多库。在这里使用几乎每种方法,最终都会得到由包管理器管理的某些事情以及需要手动滚动的某些事情。Homebrew在这样的系统上更好,但是要与MacPorts真正竞争,它需要更多的库。
aterrel 2012年

1
您还可以使用Sage(sagemath.org)或Qsnake(qsnake.com)等项目,这些项目附带了自己的Fortran编译器,并允许您在“环境”中工作,您可以在其中调用“ gfortran”。
昂德里杰·塞蒂克

我在10.5机器上装有芬克的gfortran,但从未对其进行过认真的测试。这编译cernlib和GEANT3,但我还没有下运行任何大的工作无论是最近。
dmckee 2012年

对于Homebrew,gfortran现在安装有brew install gcc$ brew install gfortran gives the message: Error: No available formula for gfortran GNU Fortran is now provided as part of GCC, and can be installed with: brew install gcc
Dave Everitt

指向Sean Farley的Wiki页面的链接不再起作用(参考如何使调试器与MacPorts安装一起使用)。可以重新关联吗?
TSGM '02

1

EasyBuild(http://hpcugent.github.com/easybuild)使您可以轻松地构建和安装自己的GCC编译器集。

基本上,您给它一个简单的easyconfig(.eb)文件,该文件指定要构建的内容(GCC +版本+希望编译器使用的语言集...),然后构建和安装是单个命令。我会说它有点像Homebrew,但它给了您更多的自由。

另外,EasyBuild支持许多其他(科学)软件包,可以使用单个命令来构建和安装它们,因此值得研究。

免责声明:我是EasyBuild团队的一员。构建GCC(包括gfortran)应该可以在OS X上运行,但是其他构建可能会很麻烦。我们正在努力,如果遇到麻烦,请告知我们。


您是否已在OS X上完成测试?当您说“应该工作”时,是出于经验还是期望?
Deer Hunter

@DeerHunter:从经验来看,我的个人笔记本电脑是一台运行OS X的Mac。构建GCC可以,但是众所周知EasyBuild在某些其他版本上存在问题。我们希望尽快对此进行调查。
肯尼斯·哈斯特

正在投票...事实证明,一直在使用EASY_BUILD将python好东西打包到RPM中……
Deer Hunter

@DeerHunter EasyBuild当前不支持将内容打包到RPM中。也许您将EasyBuild(提供“ eb”命令)与“ easy_install”(由setuptools / disitutils提供的Python安装工具)混淆了吗?
肯尼斯·哈斯特

你是对的; 随机内存故障。无论如何,都会签出EasyBuild。包装工作由fpm...
Deer Hunter

0

我建议在MacOS上使用Intel Fortran Composer。这是很好的,最新的并且有效。一件负面的事情,它不是免费的。我认为可以免费试用30天。

在Linux下,他们提供了一个免费的非商业版本。


Linux用户还可以安装Solaris Studio。它已经很好地集成了(C / C ++ / Fortran编译器)。dbxtool非常有用,分析器也非常有用(例如,用于检测openmp程序中的竞争条件)。
stali 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.