Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 95编译器可以编译Fortran 77代码吗?_Fortran_Gfortran_Fortran77_Fortran95 - Fatal编程技术网

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

Fortran 95编译器可以编译Fortran 77代码吗?,fortran,gfortran,fortran77,fortran95,Fortran,Gfortran,Fortran77,Fortran95,目前我正在mac上使用gfortran 6.1编译fortran95源代码。我想知道我是否可以用同样的方法运行FORTRAN 77源代码。如果没有,有什么建议吗?您没有提到在编译过程中遇到的错误。看见具体而言: -std=*std* 其中std可以是“f95”、“f2003”、“f2008”、“gnu”或“遗留”中的一种。 std的默认值为“gnu”。从同一页: “legacy”值是等效的,但没有过时扩展的警告,并且可能对旧的非标准程序有用。“f95”、“f2003”和“f2008”值

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

您没有提到在编译过程中遇到的错误。看见具体而言:

    -std=*std*
其中std可以是“f95”、“f2003”、“f2008”、“gnu”或“遗留”中的一种。

std的默认值为“gnu”。从同一页: “legacy”值是等效的,但没有过时扩展的警告,并且可能对旧的非标准程序有用。“f95”、“f2003”和“f2008”值分别规定严格遵守Fortran 95、Fortran 2003和Fortran 2008标准;超出相关语言标准的所有扩展都会出现错误,Fortran 77功能也会出现警告,这些功能是允许的,但在以后的标准中已过时

例如,如果要编译一个文件
old_fortran.f77
,则可以执行以下操作:

   gfortran -std=legacy old_fortran.f77 -o a.out
其中
-oa.out
提供可执行文件
a.out
。我已成功使用了此编译器的旧版本,但未使用此选项。不过,您可能会收到一些警告。第一次尝试:

   gfortran old_fortran.f77 -o a.out
编辑:在OP看了下面的评论后,看起来可能涉及到不同的问题。可能是您的安装有故障(这是可能的),或者您的
LD\u LIBRARY\u路径有问题。我认为路径中的链接器(ld)是32位的,而编译器创建的对象文件可能是64位的。只是一种预感。你能把你的结果贴出来吗

  which ld
假设返回:/path/to/ld。然后获取输出并执行以下操作

  file /path/to/ld
您能将这两个命令的输出都作为注释发布吗?

如果我使用

gfortran old_fortran.f-o a.out


谢谢我对fortran编程非常陌生,所以现在不太懂技术术语。将等待更多详细信息。我尝试了两种方法,得到了相同的错误。ld:警告:忽略文件epi.f77,该文件是为不受支持的文件格式生成的,该文件格式不是要链接的体系结构(x86_64):epi.f77体系结构x86_64的未定义符号:“_main”,引用自:主可执行文件ld:symbol的隐式输入/启动找不到架构x86_64 collect2:错误:ld返回1退出状态尝试创建一个小的“Hello World”程序并编译它。如果成功了,那么你在其他地方就有问题了。您能告诉我们您是如何编译epi.F77的吗?“file epi.F77”的输出是什么?我尝试了“hello world”,但出现了以下错误。ld:警告:忽略文件hello.f77,该文件是为不受支持的文件格式(0x20 0x70 0x72 0x6F 0x67 0x72 0x61 0x6D 0x20 0x6D 0x61 0x69 0x6E 0x0A 0x0A 0x63)生成的,该文件不是要链接的体系结构(x86_64):hello.f77体系结构x86_64的未定义符号:“\u main”,引用自:未找到架构x86_64 collect2的主可执行文件ld:symbol的隐式条目/启动:错误:ld返回1退出status@Vineetha这应该是个问题。但也许你应该问一个新问题,因为这个问题已经有了答案。除了少数例外,有效的Fortran 77程序是有效的Fortran 95程序。只是写得很糟糕的Fortran 95程序。那么你一开始做了什么不起作用的事情呢?a、 out是默认值,所以您甚至不需要它。@agentp I wa使用旧的fortran.f77,如前一个答案中所建议的那样。@Vineetha
.f77
不被任何约定使用,好的。如果代码需要由C预处理器处理,通常的Fortran77扩展实际上是
.f
.for
.f