Msys2 -> f951.exe: неустранимая ошибка: чтение модуля «...» в строке 2, столбец 1: неожиданный EOF - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь использовать модуль с gfortran 8.2.0 под Win 10 + Portable Msys2 .Эта проблема не отображается с gfortran 7.3.0 под Ubuntu 18.04LTS .Не сумев скомпилировать мой фактический случай, я собрал

Мой MWE или MCVE :

  • main.f90:

    program main_prog
    use testmod
    implicit none
    integer :: j
    end program main_prog
    
  • mod_testmod.f90:

    module testmod
    implicit none
    <various statements>
    end module testmod
    

    в зависимости от содержимого <various statements>, сборка сработала или не удалась (см. Ниже).

Компиляция

  • mod_testmod.f90: скомпилировано нормально, независимо от комбинаций, которые я использовал для <various statements> (mod_testmod.o и testmod.mod были созданы без ошибок):

    $ gfortran -g -c -o mod_testmod.o mod_testmod.f90
    
  • main.f90: <various statements>mod_testmod.f90!) Состоял из нескольких переменныхопределения:

    integer :: Npuntos=10             ! def 1
    double precision :: PI=3.1415296  ! def 2
    double precision :: T=4.0         ! def 3
    double precision :: T0=4.0        ! def 4
    double precision :: S0=4.0        ! def 5
    

    , которые были прокомментированы / не прокомментированы.В зависимости от комбинации, компиляция сработала или не удалась (это меня полностью озадачило, все должно работать).В случае неудачи сообщение об ошибке было

    $ gfortran -g -c -o main.o main.f90
    f951.exe: Fatal Error: Reading module 'testmod' at line 34 column 62: Unexpected EOF
    compilation terminated.
    

    . Я не знаю, будет ли комбинация строки / столбца полезна для отслеживания проблемы.

    Сработали комбинации несогласованных определений :(1), (1,4,5), (2,4,5), (3,4,5), (1,2,3,4), (1,2,4,5),

    Комбинации несопоставленных определений, которые не дали результатов: (нет) (комментарий от High Performance Mark был прав), (4,5), (1,3,4,5), (1,2,3,4,5),

    Это комбинации, которые я пробовал, достаточно, чтобы полностью потерять меня в происходящем.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 12 марта 2019

Я рекомендую обновить установку msys2.Я пробовал ваш MCVE на моих gfortran 8.3.0-2 (mingw64/mingw-w64-x86_64-gcc-libgfortran 8.3.0-2 (mingw-w64-x86_64-toolchain)) и windows 7 (у меня еще нет виртуальной машины с win10) с msys2 .

Я обновил установку msys2 с pacman -Syu.Затем я искал gfortran через pacman -Ss gfortran и выбрал версию x64.

Чтобы проверить, у меня есть фортран:

$ whereis gfortran
gfortran: /mingw64/bin/gfortran.exe

Я сделал это:

main.f90:

module testmod
implicit none
integer :: Npuntos=10             ! def 1
double precision :: PI=3.1415296  ! def 2
double precision :: T=4.0         ! def 3
double precision :: T0=4.0        ! def 4
double precision :: S0=4.0        ! def 5
end module testmod

и

mod_testmod.f90:

program main_prog
use testmod
implicit none
integer :: j
end program main_prog

Вот журнал:

Ugun@thor MSYS /c/t/fortran
$ gfortran -g -c -o mod_testmod.o mod_testmod.f90

Ugun@thor MSYS /c/t/fortran
$ ls
main.f90  mod_testmod.f90  mod_testmod.o  testmod.mod

Ugun@thor MSYS /c/t/fortran
$ gfortran -g -c -o main.o main.f90

Примечание: ради полноты я перепробовал все комбинации, которые вы назвали неудачными, и все они были успешными.

  1. Я думаю, вам следует обновить MSYS2 env.
  2. Обновите установку gfortran.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...