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

时间:2018-01-09 18:39:42

标签: macos fortran gfortran fortran77

我最近从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!

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

3 个答案:

答案 0 :(得分:2)

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

然而,你需要照顾的事情很少:

  • 确保您已安装XCode,您可以在此处获取

    XCode

    XCode是免费的

  • 确保您拥有命令行工具

    您可以从developer.apple.com

    获取它们

    Command Line Tools

    或直接来自XCode。可能是XCode会告诉您在首次执行时安装命令行工具

    enter image description here

    过去,当未安装命令行工具时,运行" 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/

答案 1 :(得分:1)

如果您的gfortran很久以前已安装,并且自安装以来您已更新 macOS ,则可能需要重新安装才能正确对齐并与最新的 macOS相关联工具和库。

我的建议是:

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

以下每个步骤的提示如下:

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

如果您通过自制安装了gfortran,则可以将其删除:

brew rm gcc

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

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

xcode-select --install

您可以使用

自制中安装gfortran
brew install gcc

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

brew doctor

这是一个出色的实用程序,用于检查自制配置是否正确。

答案 2 :(得分:0)

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

最初,我的PATH就像是

的/ opt / local / bin中:/选择/ local / sbin中:在/ usr / local / bin中:在/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录:/库/特克斯/ texbin中:/ opt / X11 / bin中

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

要启用对正确汇编程序(as)的调用,我必须将/ usr / bin添加到(之前)/ opt / local / bin之前的PATH,即在Mac上可以通过编辑添加〜 /.bash_profile使得$ PATH看起来像

的/ usr / bin中:/选择/ local / bin中:/选择/ local / sbin中:在/ usr / local / bin中:在/ usr / bin中:/ bin中:/ usr / sbin目录:/ sbin目录:/库/特克斯/ texbin中:/ opt / X11 / bin中

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

source / etc / bash_profile

这对我有用。