Компилировать фортран программу с 2-мя компиляторами

Я пытаюсь запустить программу, написанную на фортране, где подпрограмма была скомпилирована с помощью 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

Похоже, что логическая единица не была передана подпрограмме. Я должен добавить опцию компиляции где-нибудь... но я не знаю, что и где... И ответить на вопрос "что произойдет, если я скомпилирую оба файла одним и тем же компилятором?": программа работает отлично:)

Так что если кто-нибудь, как идеи...

1 ответ

Решение

Это не сработает. Когда вы открываете файл в основной программе, где-то в недрах библиотеки ifort будет открыт файл и сохранено некоторое связанное с ним состояние. GFortran ничего не знает о внутреннем состоянии библиотеки времени выполнения ifort и пытается найти модуль в его собственном состоянии библиотеки времени выполнения, что, очевидно, дает сбой.

Другие вопросы по тегам