我在使用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上下载的。
发布于 2012-09-27 14:02:18
编译器不会将该语句识别为注释。作为注释,它应该忽略这一行,但它正在尝试解析它。你确定"C“在第一列吗?
你为什么要使用g77?它已经多年没有得到支持了。gfortran是当前的GNU Fortran编译器。它可以编译FORTRAN 77,Fortran 90,95以及2003和2008的部分。
编辑:也许它想要一个大写的"C“。
发布于 2012-09-27 16:57:38
您链接到的页面声明f2exe包装器将-ffree-form传递给编译器:
编译命令
上面的f2exe命令只是一个调用g77的批处理文件,“真正的”编译命令。命令:g77 -ffree-form prog.for -oprog.exe指示编译器编译文件prog.for并将输出存储在文件prog.exe中。-ffree-form开关表示自由格式样式(如果您使用的是旧样式,则将其删除)。
在自由格式的Fortran中,唯一允许的注释格式是以!开头的行。事实上,这也直接写在上面的正文下面的同一页上:
评论
在自由格式样式中,整行注释和行内注释都使用!。在旧样式中,在column-1中使用"C“。
如果您没有使用提供的f2exe包装器,那么在编译固定格式的FORTRAN77代码时,不要传递-ffree-form选项。
发布于 2012-10-03 23:00:44
我假设你想坚持使用这个编译器。
如上所述,您在使用Fortran批处理文件时遇到的问题并不是很有用:首先,它会自动将".for“添加到文件名中,因此您不能编译".f”文件,而且它假定使用自由格式的语法,这在使用Fortran77编程时是不常见的(如果您想使用Fortran90,请另找一个编译器,其他答案会给您提供链接)。
现在,假设您已经编写了一个程序myprogram.f,并且您在Windows命令行中,与该程序所在的目录相同(例如,使用"cd:\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与
g77 myprogram.f mylib.aG77在Windows下以命令行方式运行。您可以在文本编辑器中编写程序。Notepad++相当不错,而且是免费的。请参阅http://notepad-plus-plus.org/
如果你在编译方面有问题,可能是环境变量造成的,所以这里有一些精确度。你必须告诉Windows在哪里可以找到G77编译器(g77.exe)。
你可以按照你下载的网站上的说明来改变Windows的环境变量PATH和LIBRARY_PATH。它需要您将编译器安装在C:\F目录下:也就是说,您将拥有C:\F\G77\bin等。
对该页面上的说明稍作修改:
您应该将C:\F\G77\bin
的路径设置为
这个对SLATEC的修改允许您使用LIBRARY_PATH编译,只需使用上面的"-lslatec“。
关于编译器的说明。它是G77,也被称为GNU Fortran 77。一个旧的编译器,集成了著名的GCC套件,直到GCC 3.4.6 (我们现在是GCC 4.7.2 )。而您下载的编译器是针对GCC 2.95版本的。
它是一个很好的Fortran 77编译器,但它没有得到很好的优化,当然,您不会获得对Intel SSE等新处理器功能的任何支持。
现代Fortran编译器仍然可以理解Fortran 77的大部分(如果不是全部),以及Fortran 90和更新标准的所有新功能,这些功能非常有用。
有趣的是,还有另一个地方可以下载相同的编译器(除了没有SLATEC),以防页面被破坏:http://www.mbr-pwrc.usgs.gov/software/g77.html
https://stackoverflow.com/questions/12614781
复制相似问题