1

我正在尝试运行一个用 fortran 编写的程序,其中子程序已用 gfortran 编译,主程序已用 ifort 编译:

这里是源代码:

子程序:

subroutine testsub
    implicit none
    integer icarte
    read(10,*) icarte
    write(*,*)icarte 
    return 
    end`

主要代码:

program test
    implicit none
    integer i
    open (unit=10, file="file_test")
    do i=1,6
       read(10,*)
    enddo
    call testsub
    close(10)
    end

读取的文件是:

1
2
3
4
5
6
7 5 6 8
23

然后我像这样编译:

gfortran -c testsub.f

ar rcs libtest.a testsub.o

ifort -o testexe test.f -L./ -ltest -L/.../gcc/4.7.1/lib64 -lgfortran

我得到:

At line 4 of file testsub.f (unit = 10, file = 'fort.10')
Fortran runtime error: End of file

看起来逻辑单元没有提供给子例程。我应该在某处添加一个编译选项......但我真的不知道什么和在哪里......并回答“如果我用相同的编译器编译两个文件会发生什么?”这个问题。: 程序运行完美:)

所以,如果有人有任何想法......

4

1 回答 1

5

这行不通。当您在主程序中打开文件时,在 ifort 库的内部某处,该文件将被打开并存储与之相关的一些状态。GFortran 对 ifort 运行时库的内部状态一无所知,并试图在自己的运行时库状态下查找单元,这显然失败了。

于 2012-09-14T07:30:15.313 回答