【问题标题】:Fortran codes won't compile on Mac with gfortran使用 gfortran 无法在 Mac 上编译 Fortran 代码
【发布时间】:2025-11-21 21:20:02
【问题描述】:

我最近从 SGI、Sun 工作站环境转移到了 Mac。 SGI 和 Sun 带有 Fortran 编译器,所以我可能有 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!

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

【问题讨论】:

  • 你是如何安装gfortran的?
  • 我真的不记得了。我认为 MacPorts 或 Homebrew。我几年前加载了 gfortran,但直到现在才需要它。
  • 就个人而言,我倾向于卸载它,更新 Xcode 和 CommandLine 工具,然后重新安装。每次升级到 macOS 时,所有底层链接和内容都会发生变化。运行which gfortran 看看你有哪一个 - homebrew 将在 /usr/local/bin 和 MacPorts 可能在 /opt。
  • 通过运行 Xcode 并检查菜单中的更新和/或运行 AppStore 并单击 Updates 来升级 Xcode。使用xcode-select --install 安装命令行工具。自制软件包 gfortranGCC,所以你可以通过 brew install gcc 得到它。
  • 谢谢。如果可行,我会通知您,您可以将其作为答案提交,我会选择它。

标签: macos fortran gfortran fortran77


【解决方案1】:

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

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

  • 确保你已经安装了 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/

【讨论】:

  • 你的意思是,从源代码构建 GCC?
  • 不,只是 GFortran
  • 很公平(我原本打算写 gfortran,但我想我会问得更广泛)。也许在答案中澄清 gfortran 构建会很有用?我最初不能告诉你这个意思,对 OpenMPI 的引用是什么意思。
  • 如何在没有 GCC 的情况下编译 gfortran?我不认为这是可能的。你会怎么做?通常你会做 --enable-languages=c,c++,fortran 并且你不能在没有 C 的情况下包含 Fortran。
  • 你是对的。我在答案中混淆了一些东西。 macOS(我不时使用)和 GCC 源(我在某些情况下也使用)的包。
【解决方案2】:

如果您的 gfortran 是很久以前安装的,并且您在安装后更新了 ma​​cOS,则可能需要重新安装才能正确对齐并与最新的 ma​​cOS 链接strong> 工具和库。

我的建议是:

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

每个步骤的提示如下:

请注意,gfortran 是 GCC 的一部分 - “GNU 编译器集合”

如果您通过 homebrew 安装了 gfortran,则可以使用以下命令将其删除:

brew rm gcc

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

Xcode 命令行工具包括makegit 以及编译器的命令行版本。您可以安装/更新 Xcode 命令行工具:

xcode-select --install

您可以使用 homebrew 安装gfortran

brew install gcc

完成后,您应该确保您的PATH 在开头附近包含/usr/local/bin,并且运行时没有错误:

brew doctor

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

【讨论】:

    【解决方案3】:

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

    最初,我的 PATH 类似于

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

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

    要启用对正确汇编程序(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

    这对我有用。

    【讨论】: