1

I'm trying to compile my first fortran90 programm Hello

Program Hello
Print *, "Hello World!"
End Program Hello

in cygwin

$ 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'

From my research most common cause is mixing 32-bit assembly code with a 64-bit assembler, which was also phrased as mixing 32-bit binutils and 64-bit gcc.

But my binutils is not 32-bit.

$ 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

What does it mean and how do I proceed to solve this issue?

Some other things I tried

$ g95 -o -m32 hello hello.f90
same errors as previously plus
g95.exe: hello: No such file or directory
$ gfortran -o hello hello.f90
gfortran: fatal error: -fuse-linker-plugin, but cyglto_plugin.dll not found
compilation terminated.
$  f95 hello.f90 -o hello.exe
f95: fatal error: -fuse-linker-plugin, but cyglto_plugin.dll not found
compilation terminated.
tRash
  • 131
  • 1
  • 11

1 Answers1

1

Found an answer here. Turns out my gcc and gcc-fortran was not of the same version.

$ 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

This does the job

apt-cyg remove gcc-fortran
apt-cyg install gcc-fortran
tRash
  • 131
  • 1
  • 11