Fortran90错误:“push';

Fortran90错误:“push';,fortran,cygwin,gfortran,fortran90,Fortran,Cygwin,Gfortran,Fortran90,我正在编译我的第一个fortran90程序你好 Program Hello Print *, "Hello World!" End Program Hello 在锡温 $ g95 -o hello hello.f90 C:\cygwin64\tmp/ccPR6KU1.s: Assembler messages: C:\cygwin64\tmp/ccPR6KU1.s:11: Error: invalid instruction suffix for `push' C:\cygwin64\tmp/

我正在编译我的第一个fortran90程序你好

Program Hello
Print *, "Hello World!"
End Program Hello
在锡温

$ g95 -o hello hello.f90
C:\cygwin64\tmp/ccPR6KU1.s: Assembler messages:
C:\cygwin64\tmp/ccPR6KU1.s:11: Error: invalid instruction suffix for `push'
C:\cygwin64\tmp/ccPR6KU1.s:28: Error: invalid instruction suffix for `push'
根据我的研究,最常见的原因是混合使用32位汇编代码和64位汇编程序,这也被称为混合使用32位binutils和64位gcc

但是我的binutils不是32位的

$ cygcheck -c | grep binutils
binutils                                2.29-1                OK
mingw64-i686-binutils-debuginfo         2.29.1.787c9873-1     OK
mingw64-x86_64-binutils                 2.29.1.787c9873-1     OK
mingw64-x86_64-binutils-debuginfo       2.29.1.787c9873-1     OK
这意味着什么?我如何着手解决这个问题

我还尝试了其他一些事情

$ g95 -o -m32 hello hello.f90
same errors as previously plus
g95.exe: hello: No such file or directory
找到了答案。原来我的gcc和gcc-fortran不是同一个版本

$ cygcheck -c | grep gcc
gcc-core                                7.4.0-1               OK
gcc-debuginfo                           7.4.0-1               OK
gcc-fortran                             8.3.0-1               OK
这就行了

apt-cyg remove gcc-fortran
apt-cyg install gcc-fortran
$ cygcheck -c | grep gcc
gcc-core                                7.4.0-1               OK
gcc-debuginfo                           7.4.0-1               OK
gcc-fortran                             8.3.0-1               OK
apt-cyg remove gcc-fortran
apt-cyg install gcc-fortran