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
Fortran77程序不执行_Fortran - Fatal编程技术网

Fortran77程序不执行

Fortran77程序不执行,fortran,Fortran,工作的Fortran编译器有时会生成无效的Win32.exe文件 大家好, 在某些情况下,一些正在工作的Fortran编译器似乎有一种奇怪的行为。我曾尝试编译和运行John Denton教授的程序,这些程序可以在这里找到: 程序的不同版本意味着可以编译并运行良好。最后一个名为Multall的程序也有几个不同的版本。与以前一样,可以毫无问题地编译适当的源代码。但是:当我试图运行生成的.exe文件时,我收到一条非常奇怪的错误消息,说Multall的.exe将不是有效的Win32可执行文件 我在Wi

工作的Fortran编译器有时会生成无效的Win32.exe文件

大家好,

在某些情况下,一些正在工作的Fortran编译器似乎有一种奇怪的行为。我曾尝试编译和运行John Denton教授的程序,这些程序可以在这里找到:

程序的不同版本意味着可以编译并运行良好。最后一个名为Multall的程序也有几个不同的版本。与以前一样,可以毫无问题地编译适当的源代码。但是:当我试图运行生成的.exe文件时,我收到一条非常奇怪的错误消息,说Multall的.exe将不是有效的Win32可执行文件

我在WindowsXP和Windows8上使用了四种不同的Fortran编译器(g77、Cygwin、Mingw、FTN95),结果总是一样的。我做了几次测试,在我看来,产生奇怪错误消息的原因是Multall包含了大量的源代码。有16000多行代码,因此编译器默认为代码段分配的内存可能太小,从而发生溢出

为了增加代码段的内存量,我尝试了g77编译器的几个命令行选项,但都不起作用。有谁能告诉我77国集团的哪些命令行选项使庞大的程序Multall的.exe工作?或者我错了,奇怪的错误消息与代码段无关?谁能帮我


非常感谢,我非常感谢您的帮助

事实上,问题不在于程序大小,而在于堆栈大小。这是因为公共块很大。作为测试,您可以将commall-open-18.3中的JD减少到1000,您会注意到问题已经解决。
您可以检查数组是否过大,并调整一些参数。

160000不是一个很大的程序-有很多例子有1000000多行,这些都可以很好地编译。为了更进一步,您能否向我们展示您的具体操作,以及生成的确切错误消息和使用的编译器版本?更好的办法是看看是否可以生成一个显示完全相同症状的小代码。也就是说,看了5分钟后,我猜测公共块中至少有3.8 GB的内存(25年前就应该被丢弃)是造成问题的原因。正如Ian所暗示的,您必须在ordet中使用可分配数组(和x64模式)以超过3.8 GB的限制。代码大小为16000。不是16万。但您的评论不受此影响。非常感谢,我希望这将解决问题!将JD减少到1000至少可以解决Linux上的问题。我要说的是,在没有公共块的情况下重写代码,也许是用现代的fortran…谢谢我在commall-open-18.3中将JD设置为1000(以前的2500),并且“不是有效的Win32程序”消失了,程序运行正常。