0

我正在使用 Fortran g77 并遇到了这个问题:

c this program calculates runoff and sediment
  1 2
 Unrecognized statement name at (1) and invalid form for assignment or statement-function definition at (2)

此外,编译器只能识别.for文件扩展名,而不是.f.

有谁知道,问题出在哪里?我从http://www.cse.yorku.ca/~roumani/fortran/ftn.htm下载了它。

4

3 回答 3

1

我假设你想坚持使用这个编译器。

如上所述,您使用 F2EXE 批处理文件时遇到的问题,它不是很有用:首先它会自动在文件名中添加“.for”,因此您无法编译“.f”文件,并且它假设自由格式的语法,这在 Fortran 77 编程时是不常见的(如果你想要 Fortran 90,找到另一个编译器,其他答案会给你链接)。


现在,假设您编写了一个程序 myprogram.f,并且您在 Windows 命令行中,在程序所在的同一目录中(例如,使用“cd C:\mydirectory”来更改)

你将编译

g77 myprogram.f

如果您使用 SLATEC,您使用

g77 myprogram.f -lslatec

如果要为 .exe 文件指定名称(默认为 a.exe),请编写

g77 myprogram.f -o myprogram.exe

还有其他有用的选项

g77 -O2 myprogram.f     to optimize (within g77 2.95 limitations)
g77 -Wall myprogram.f   to enable all compiler warnings, very useful
                          to find errors in your code
g77 -c myprogram.f      to only compile (you get a .o file), this is
                          useful to compile functions and subroutines, to
                          later build a static library (.a file), like
                          libslatec.a which is given with the compiler

并使用 ar.exe 构建一个库:

ar cru mylib.a myfunc1.o myfnuc2.o ...

然后你可以使用 is with

g77 myprogram.f mylib.a

G77 在 Windows 下以命令行方式运行。您在文本编辑器中编写程序。Notepad++ 相当不错而且它是免费的。见http://notepad-plus-plus.org/

如果您在编译时遇到问题,可能来自环境变量,所以这里有一些精度。您必须告诉 Windows 在哪里可以找到 G77 编译器 (g77.exe)。

您可以按照下载它的站点上的说明更改 Windows 的环境变量 PATH 和 LIBRARY_PATH。它需要您将编译器安装在 C:\F 目录中:也就是说,您将拥有 C:\F\G77\bin 等。

对该页面上的说明稍作修改:

  • 您应该将PATH设置为C:\F\G77\bin
  • LIBRARY_PATHC:\F\G77\lib;C:\F\SLATEC\lib

对 LIBRARY_PATH 的这种修改允许您使用 SLATEC 简单地使用上面的“-lslatec”进行编译。


关于编译器的说明。它是 G77,也称为GNU Fortran 77。一个旧的编译器,在 GCC 3.4.6 之前与众所周知的 GCC 套件集成(我们现在是 GCC 4.7.2)。您下载的编译器适用于 GCC 2.95 版本。

它是一个很好的 Fortran 77 编译器,但优化得不是很好,当然,您不会获得对英特尔 SSE 等新处理器特性的任何支持。

现代 Fortran 编译器仍然可以理解大部分(如果不是全部) Fortran 77,以及 Fortran 90 和更新标准的所有新功能,这些功能非常有用。

知道还有另一个地方可以下载相同的编译器(除了没有 SLATEC)也可能很有趣,以防页面被破坏: http://www.mbr-pwrc.usgs.gov/software/g77。 html

于 2012-10-03T15:00:44.307 回答
1

您链接到的页面表明f2exe包装器传递-ffree-form给编译器:

编译命令

上面的f2exe命令只是一个调用g77“真正的”编译命令的批处理文件。命令:

g77 -ffree-form prog.for -oprog.exe

指示编译器编译文件prog.for并将输出存储在文件中prog.exe。该-ffree-form开关表示自由格式样式(如果您使用旧样式,请将其删除)。

在自由格式的 Fortran 中,唯一允许的注释格式是以 . 开头的行!。事实上,这也是在同一页上直接写在上面的文字下:

注释

在自由格式样式中,!用于全行和内嵌注释。在旧样式中,在第 1 列中使用“C”。

如果您没有使用提供的包装器,则在编译固定格式 FORTRAN 77 代码时f2exe不要传递选项。-ffree-form

于 2012-09-27T08:57:38.340 回答
1

编译器没有将该语句识别为注释。作为评论,它应该忽略该行,但它正在尝试解析它。您确定“C”在第一列吗?

你为什么用g77?多年来一直不支持。gfortran 是当前的 GNU Fortran 编译器。它可以编译 FORTRAN 77、Fortran 90、95 以及 2003 和 2008 的部分内容。

编辑:也许它需要一个大写的“C”。

于 2012-09-27T06:02:17.870 回答