回 帖 发 新 帖 刷新版面

主题:在LINUX下用f77或g77编译怎么能读超100G以上的超大二进制文件

我用FORTRAN编写的程序,在UNIX下加64位选项能读写超100G的二进制文件,现想移植到LINUX下,用f77或g77编译加啥参数才能成功,请高手老师指教!

回复列表 (共10个回复)

沙发

是够大的,换用gfortran试试行不行?

板凳


为了便于移植和通用性,还是用G77或f77为好!

3 楼

[quote]
为了便于移植和通用性,还是用G77或f77为好![/quote]
我怎么觉得应该是,为了便于移植和通用性,还是用gfortran为好!

4 楼


gfortran的编译参数是啥才能读写超大文件?

5 楼

这个不仅需要编译器支持,还需要操作系统支持,楼主很有可能需要重编译Linux的内核~~~~
不过好像需要64位版本的吧~~~~~32位的我真不确定是否能支持:)

PS:楼主那个兼容性问题确实太搞了:)

6 楼

和编译器无关
需要3方面支持
内核支持、文件系统支持、CRT支持

前2个只要内核和系统不很旧就都支持
关于CRT,得查看glibc版本是啥,不确定支持,应该去问发行版提供商

三方面确定完了,那么
gcc/gfortran编译时加入-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

7 楼


确认的是系统是支持的,用CC加参数 -DLARGE_FILE - D_LARGEFILE_SOURCE 
 -D_FILE_OFFSET_BITS=64编译C程序是能读写超100G文件的,读出的数据也没问题,但传给FORTRAN主程序就不对了,问题在用F77或G77编译的FORTRAN程序读超100G文件不对,也就是FORTRAN的编译参数不对!

8 楼

gcc/gfortran版本分别是什么
glibc版本是什么

9 楼

呵呵,不是说改用gfortran试试么,f77或g77我们都不用了。

10 楼

f77和g77与gfortran对预处理宏的处理不一样,或者说我都不知道是否支持预处理宏。
gfortran与gcc都是-E的处理,所以是一样的

我来回复

您尚未登录,请登录后再回复。点此登录或注册