fortran - Fortran90 错误:“push”的指令后缀无效
问题描述
我正在尝试编译我的第一个 fortran90 程序 Hello
Program Hello
Print *, "Hello World!"
End Program Hello
在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'
根据我的研究,最常见的原因是将 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
$ 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.
解决方案
在这里找到了答案。原来我的 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
推荐阅读
- vba - 使用 ComboBox 更新 MS Access 表,使用 VBA 生成自动编号
- java - 在 vert.x 上使用事件总线进行编解码器注册
- sql - 清点后如何计算平均值?
- python - 使用 pandas 处理的 live tail csv
- javascript - 如何在 Javascript(或 Flask WebApp)中实现语音“识别”?
- node.js - Heroku PDFTK 抛出模糊的 EPIPE 和 EACCES 错误
- powershell - PowerShell ISE 无法识别 $profile 变量
- apache - 将 gridsome 应用程序部署到 apache 2 服务器
- react-native - 如何在反应导航中应用独立的 HeaderStyleInterpolators?
- python - 如何将结果保存在 txt 文件中,但与打印不同?