如何让f2py启用-std=legacy编译老旧FORTRAN77为Python模块
解决f2py编译FORTRAN77代码时的legacy标准问题
要让f2py编译你的FORTRAN77代码时启用-std=legacy标准,有几种可行的方法:
通过环境变量传递编译参数
在执行f2py命令前,先设置FFLAGS环境变量,让gfortran使用legacy标准:# Bash/Zsh 环境 export FFLAGS="-std=legacy" f2py -c -m pymodel model.FOR --fcompiler=gnu95# Windows CMD 环境 set FFLAGS=-std=legacy f2py -c -m pymodel model.FOR --fcompiler=gnu95直接在f2py命令中指定编译参数
使用--f90flags参数将-std=legacy传递给gfortran(该参数对FORTRAN77代码同样生效):f2py -c -m pymodel model.FOR --fcompiler=gnu95 --f90flags="-std=legacy"永久配置编译参数(可选)
如果你需要长期使用这个编译选项,可以修改numpy的f2py配置文件:
找到numpy安装目录下的site-packages/numpy/f2py/site.cfg,或者用户主目录下的.numpy-site.cfg,在[gnu95]段落中添加:fflags=-std=legacy保存后,后续执行f2py时会自动应用这个参数。
这些方法都能让gfortran以legacy标准处理你的FORTRAN77代码,解决因语法兼容性导致的编译错误。
内容的提问来源于stack exchange,提问作者Guy
相关产品推荐
相关产品推荐

