【发布时间】:2012-11-22 02:06:48
【问题描述】:
我正在尝试编译 Datcom More Info Here,我在 Mac OSX 上使用 gfortran 成功完成了此操作。 为了在 W7 上做同样的事情,我下载了 MinGW 并做了我在 Mac 上做的同样的事情,但我得到了
Program received signal SIGSEGV: Segmentation fault - invalid memory reference
Backtrace for this error:
#0 6f6a5456
#1 6f69321f
#2 004011e9
当我启动程序时...
$ datcom.exe
Enter the input file name:
EX1.INP
【问题讨论】:
-
尝试使用选项
-fbounds-check进行编译 - 如果您错误地访问了一个数组,这将在运行时告诉您哪个数组和哪个索引导致了问题。 -
好的。重新编译后使用该程序,我得到一个新错误:
At line 11 of NMTEST.F90Fortran Runtime error: Index '2' of dimension 1 of array 'kol' above upper bound of 1在 MacOSX 中它可以正常工作:/ -
我相信这是因为代码遵循 arr(1) 表示 arr(*) (假定大小的数组)的旧约定。所以需要找到如何将 1 视为 * (或手动重写所有这些,这是不切实际的)
-
对于某些版本的 gfortran,有一个
-fugly-assumed应该可以解决这个问题,但我不确定最近的版本是否支持它。你在 Mac 上使用的是什么版本,mingw 是什么版本? -
您可以尝试使用
-std=选项...也许先尝试-std=legacy,或者-std=f95
标签: macos windows-7 fortran gfortran