Fortran 95 编译器可以编译 Fortran 77 代码吗?

Vin*_*tha 3 fortran gfortran fortran77 fortran95

目前我正在使用 gfortran 6.1 在 mac 上编译 fortran95 源代码。我想知道是否可以使用相同的方法运行 FORTRAN 77 源代码。如果没有,有什么建议吗?

Jag*_*gte 5

你没有提到你在编译过程中遇到了什么错误。请参阅此链接。具体来说:

\n\n
    -std=*std*\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中std可以是 \xe2\x80\x98f95\xe2\x80\x99、\xe2\x80\x98f2003\xe2\x80\x99、\xe2\x80\x98f2008\xe2\x80\x99、\xe2\x80\ 之一x98gnu\xe2\x80\x99 或 \xe2\x80\x98legacy\xe2\x80\x99。这

\n\n
\n

std 的默认值为 \xe2\x80\x98gnu\xe2\x80\x99。来自同一页面: \n \xe2\x80\x98legacy\xe2\x80\x99 值是等效的,但没有过时扩展的警告,并且可能对旧的非标准程序有用。\xe2\x80\x98f95\xe2\x80\x99、\xe2\x80\x98f2003\xe2\x80\x99 和 \xe2\x80\x98f2008\xe2\x80\x99 值指定严格符合 Fortran 95、Fortran 2003和 Fortran 2008 标准;对于超出相关语言标准的所有扩展都会给出错误,并且对于在以后的标准中允许但已过时的 Fortran 77 功能给出警告。

\n
\n\n

例如,如果您有一个文件old_fortran.f77要编译,您可以这样做:

\n\n
   gfortran -std=legacy old_fortran.f77 -o a.out\n
Run Code Online (Sandbox Code Playgroud)\n\n

where-o a.out为您提供可执行文件a.out。我已经成功使用了该编译器的旧版本,但没有使用此选项。不过您可能会收到一些警告。第一次尝试:

\n\n
   gfortran old_fortran.f77 -o a.out\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:查看OP下面的评论后,看起来可能涉及一个不同的问题。可能是您的安装有错误(这是可能的)或者您的安装LD_LIBRARY_PATH搞砸了。我认为路径中的链接器 (ld) 是 32 位,编译器创建的目标文件可能是 64 位。只是一种预感。你可以发布输出

\n\n
  which ld\n
Run Code Online (Sandbox Code Playgroud)\n\n

假设返回:/path/to/ld。然后获取该输出并执行

\n\n
  file /path/to/ld\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以将这两个命令的输出作为评论发布吗?

\n