Компилировать фортран программу с 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 и пытается найти модуль в его собственном состоянии библиотеки времени выполнения, что, очевидно, дает сбой.