Fortran 代码无法使用 gfortran 在 Mac 上编译

Fortran codes won't compile on Mac with gfortran

我最近从 SGI、Sun 工作站环境转移到 Mac。 SGI 和 Sun 带有 Fortran 编译器,所以我多年来为 post 处理和分析模拟数据编写了大约 100 个小的 f77 代码。我希望使用 gfortran 在我的 iMac 上获得这些代码 运行。其中大部分都是非常简单的代码,但我无法编译和执行它们。我尝试从基础开始,并从 gfortran 帮助页面编写了 Hello World 代码。我的代码 fortran.f 是:

program helloworld
print *, "hello world"
end program helloworld

当我尝试根据我输入的示例进行编译时:

gfortran fortran.f

但我不断收到错误消息:

FATAL:/opt/local/bin/../libexec/as/x86_64/as: I don't understand 'm' flag!

这与我在其他代码上收到的错误消息相同。有人可以告诉我我做错了什么吗?我想不出一个更简单的例子,但我似乎无法让它发挥作用。

谈到 macOS,我认为构建表单源是您可以拥有的最佳方法。您可以通过直接从以下地址下载和编译作为 GCC 一部分的 GFortran 来轻松实现这一点:https://gcc.gnu.org/wiki/GFortran

但是,您需要注意的事情很少:

  • 确保你已经安装了XCode,你可以在这里

    XCode

    XCode是免费的

  • 确保你有命令行工具

    您可以从 developer.apple.com

    Command Line Tools

    或直接来自 XCode。可能 XCode 会告诉你在第一次执行时安装命令行工具

    过去,运行命令如"svn",当未安装命令行工具时,也会触发安装。

  • 编译 GCC

    > ./configure --prefix=$HOME/opt/usr/local
    > make all
    > make install
    
  • 或者,您可以使用来自 GFortran 的 macOS 包进行安装

    gfortran-6.3-Sierra.dmg

使用基于 Fortran 的 MPI 代码的完整示例:

http://www.owsiak.org/running-open-mpi-on-macos/

如果您的 gfortran 是很久以前安装的并且您在安装后更新了 macOS,它可能需要重新安装才能正确对齐并与最新的 macOS 工具和库。

我的建议是:

  • 卸载 gfortran,
  • 检查 Xcode 及其命令行工具是否是最新的,
  • 重新安装 gfortran.

每个步骤的提示如下:

请注意 gfortran 是 GCC 的一部分 - "GNU Compiler Collection".

如果您通过 homebrew 安装了 gfortran,您可以使用以下方法删除它:

brew rm gcc

您可以通过转到 AppStore 并单击右上角的 Updates 来更新 Xcode。

Xcode 命令行工具包括 makegit 以及编译器的命令行版本。您可以使用 install/update Xcode 命令行工具:

xcode-select --install

您可以使用 homebrew 安装 gfortran 使用:

brew install gcc

完成后,您应确保 PATH 在开头附近包含 /usr/local/bin 并且 运行:

时没有错误
brew doctor

这是一个很棒的实用程序,可以检查您的 homebrew 配置是否正确。

我所要做的就是改变路径。

最初,我的 PATH 类似于

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin

由于这个原因,没有调用 /usr/bin 目录中的默认汇编器 (as)。

为了能够调用正确的汇编程序 (as),我必须将 /usr/bin 添加到 /opt/local/bin 之前(之前)的 PATH,即在 Mac 上可以通过编辑 ~/.bash_profile 添加,这样 $PATH 看起来像

/usr/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin

编辑后,在命令提示符处执行:

来源/etc/bash_profile

这对我有用。