我有一个Fortran程序,我一直在Linux上运行,没有重大问题。今天我为OS X编译了它,我收到以下错误:
sequential-access I/O to unit open for direct access
我将程序简化为最小的工作示例以重现错误:
program read_nc
integer :: jday, year
NAMELIST/date/jday, year
open(10,file='realtime.crd',form='formatted',status='old')
read(unit=10,nml=date)
close(10)
end program
我用ifort编译它:
ifort test_open_osx.f90
,运行程序,我没有问题,即我无法重现完整程序中发现的错误。
经过一段时间检查潜在的错误来源之后,我决定将netCDF库链接到上面的“简单测试程序”中,因为我的完整程序使用了netCDF库。所以现在,在不更改源代码的情况下,我尝试编译为ifort test_open_osx.f90 -L/usr/local/lib -lnetcdff
,编译时没有错误。然后我跑了它,令我惊讶的是,错误出现了:
forrtl: severe (259): sequential-access I/O to unit open for direct access, unit 10, file realtime.crd
Image PC Routine Line Source
libnetcdff.6.dyli 0000000105CB4C11 Unknown Unknown Unknown
a.out 0000000105BC4188 Unknown Unknown Unknown
a.out 0000000105BBA9CD Unknown Unknown Unknown
a.out 0000000105BBA88E Unknown Unknown Unknown
为什么netCDF库与这个简单的语句冲突?我可以用一个简单的编译器选项修复它吗?我不想破坏源代码,因为它在我的Linux工作站上运行得很好,我只是想继续在我的笔记本电脑上使用它。
PS:我试图阅读的文件结构是:
&sunrise_parms
JDATE = 20130101
/
&date
jday = 001
year = 2013
/
PS:在linux上我也使用ifort