关于gfortran和ifort

news/2024/11/17 5:27:24/

最近用fortran写了个程序,分别用gfortran和ifort进行了编译,却发现同样的代码,gfortran可以编译通过,而ifort出错。下面以样例程序加以说明,看看这两个编译器有什么小区别。

代码包括三个源文件:一个主程序(main.f95)、一个专门声明变量的module(var.f95)以及一个封装subroutine算法的module(sub.f95)。三者的调用关系为:sub.f95中USE了var.f95,main.f95中USE了var.f95和sub.f95。首先用gfortran写个简单的makefile,如下:

SRC = var.f95 sub.f95 main.f95
OBJ = *.mod
FC  = gfortran
exe : $(SRC)$(FC) -o exe $(SRC)
clean:rm exe $(OBJ)

shell中敲入make,没问题,编译通过。同样地,将FC改为ifort,再make出现错误。原来ifort不识别.f95的后缀名,将以上文件改为.f90后,make通过,此区别一吧。
现在将SRC改为*.f90,使用gfortran仍可以make过,但使用ifort又出现了错误。使用ifort要严格按照依赖关系写makefile?笔者也不是很确定,此区别二吧。
此外,ifort编译的exe运算速度似乎比gfortran要快得多。

PS:程序运行时出现了恼人的segment fault(core dumped),花了一下午的时间才发现代码里的错误。参考了以下两篇博客,使用GDB调试解决了问题,在这里做个记录吧,防止以后遗忘。
http://blog.csdn.net/yam_killer/article/details/7970163
http://blog.csdn.net/deutschester/article/details/6739861


http://www.ppmy.cn/news/598614.html

相关文章

macOS使用CodeRunner快速配置fortran环境

个人网站:xzajyjs.cn 由于一些项目的缘故,需要有fortran的需求,但由于是M1 mac的缘故,不能像windows那样直接使用vsivf这种经典配置。搜了一下网上主流的跨平台方案,主要是gfortran,最近用Coderunner(主要…

python调用fortran学习笔记

起因:不想把fortran结果手动搬到excel里画图表 先在window系统试, 使用f2py方法的时候总是报错has fortran sources but no fortran compiler found,或者not supported between instances of nonetype and str。 使用dllctypes库的时候&am…

在Linux环境下,使用ifortran编译 带有结构的和.inc头文件 的fortran项目生成.so文件

在Linux环境下,使用ifortran编译 带有结构的和.inc头文件 的fortran项目生成.so文件 1 致谢2 参考文章和手册3 需求描述3.1 文件结构3.2 文件调用关系 4 主程序改造为函数5 项目编译方法5.1 方案一 直接对所有.f90源文件进行编译5.1.1 具体实现5.1.2 注意事项 5.2 方…

Fortran入门——菜鸟级基础语法

前言: 最近需要自学Fortran,本人菜鸟,零基础,这篇文章也是帮助我自己更好的记住一些基础语法。所以,有Fortran基础的,可以跳过本篇啦~ 本文的环境是mingw vscode 哈 1.后缀 Fortran文件的后缀是 .f90(还…

Fortran编译初步

写在前面 注意:本文是关于 gfortran 的文章。如果你不清楚 gfortran,g77,g95 等等的概念的话,不妨看看GCC 的 Fortran 语言编译器介绍;如果你要用 g77 的话,这是一篇g77入门。 [编辑]Fortran 编程中相关文…

idea中有个目录不显示,磁盘中是有的

java项目src下有个目录data不显示 通过打开D盘看目录是有的,运行项目的时候报错,找不到目录下的文件。 解决方案: idea -> file -> seetings -> EDitor -> file types 打开页面后右侧显示有ignore files and folders 查看这里面有…

linux f95编译器,gfortran如何告诉我是否正在编译f90或f95代码?

gfortran可以从文件扩展名中猜出某些东西;如果文件的扩展名为.f,.f90,f95,.f03或.f08,则它将采用具有适当标准的固定(.f)或自由格式。但你可以强制它使用选项-std f2003编译(比方说)fortran2003代码。例如,来自docume…

笔记:CLM5.0模型运行一些参数

Introduction 因为研究涉及CLM和其他模型couple运行,需要把一些CLM运算的变量传递到另一个模型 . 主要涉及的数据都以type形式,罗列在$CESM/components/clm/src/main/clm_instMod.F90 相当于一个个结构体,里面包含很多歌变量 想找出具体…