gFortran编译器使用指南

941 字
5 分钟
gFortran编译器使用指南

终端 gFortran#


使用conda-forge中发布的gfortran编译器

下面为一套 gfortran 常用命令速查表,按“最常用 → 进阶 → 调试/排错”来分。


0. 环境配置#

使用conda环境配置gfortran编译器。建议先创建虚拟环境配置fortran编译器,虚拟环境创建方法见[[终端Conda]]

以下是配置方法: 进入虚拟环境后,从conda-forge中下载gFortran编译器,conda-forge中更新更快,版本更全

conda install -c conda-forge gfortran

此时已经完成gfortran编译器的安装,需要一个编辑器,这里选择VS code。在VS code中安装modern Fortran插件,按照文档配置fortls、fprettify 提供代码补全和语法检查。 详细配置方法见 Bilibili BV1WfNCz8EzE


1. 最基本的编译命令#

1.1 编译并链接生成可执行文件#

Terminal window
gfortran main.f90 -o main

如果有多个源文件:

Terminal window
gfortran a.f90 b.f90 c.f90 -o app

1.2 只编译,不链接#

生成 .o 文件:

Terminal window
gfortran -c main.f90

多个文件:

Terminal window
gfortran -c a.f90 b.f90

1.3 指定输出文件名#

Terminal window
gfortran main.f90 -o myprog

2. 处理不同格式/预处理#

2.1 强制自由格式#

Terminal window
gfortran -ffree-form file.f -o file

2.2 强制固定格式#

Terminal window
gfortran -ffixed-form legacy.f90 -o legacy

2.3 开启预处理#

会链接成exe文件

Terminal window
gfortran -cpp main.F90 -o main

只预处理为f90文件

Terminal window
gfortran -cpp -E main.F90 -o main.f90

2.4 关闭预处理#

Terminal window
gfortran -nocpp main.F90 -o main

一般来说:

  • .f/.for/.ftn:常按固定格式
  • .f90:自由格式
  • .F90:通常预处理 + 自由格式

3. 常用警告和检查选项#

3.1 打开常见警告#

Terminal window
gfortran -Wall main.f90 -o main

3.2 更严格一些#

Terminal window
gfortran -Wall -Wextra main.f90 -o main

3.3 检查运行时错误#

Terminal window
gfortran -fcheck=all main.f90 -o main

常用于调试:

  • 数组越界
  • 未初始化访问
  • 一些运行时错误

4. 调试相关#

4.1 加调试信息#

Terminal window
gfortran -g main.f90 -o main

4.2 适合调试的组合#

Terminal window
gfortran -g -O0 -Wall -Wextra -fcheck=all main.f90 -o main

说明:

  • -g:生成调试符号
  • -O0:关闭优化,便于调试
  • -fcheck=all:运行时检查
  • -Wall -Wextra:尽量多提示问题

5. 常用优化选项#

5.1 常规优化#

Terminal window
gfortran -O2 main.f90 -o main

5.2 更高优化#

Terminal window
gfortran -O3 main.f90 -o main

5.3 发布版常见组合#

Terminal window
gfortran -O2 -march=native main.f90 -o main

说明:

  • -O2:常用平衡优化
  • -O3:更激进优化
  • -march=native:针对当前机器优化

6. 数值/浮点相关#

6.1 启用浮点异常检查#

Terminal window
gfortran -ffpe-trap=invalid,zero,overflow main.f90 -o main

适合抓:

  • 除零
  • 非法浮点
  • 溢出

6.2 保留未优化的浮点行为#

有时为了调试数值问题,会减少激进优化:

Terminal window
gfortran -O0 -g main.f90 -o main

7. 生成预处理后的源码#

7.1 只看预处理结果#

Terminal window
gfortran -cpp -E main.F90

这会输出预处理后的代码,适合排查:

  • #include
  • #ifdef
  • 宏展开

8. 模块和头文件搜索路径#

8.1 指定模块/包含文件搜索路径#

Terminal window
gfortran -I./include -c main.f90

如果 .mod 或 include 文件在别的目录,这个很常用。


9. 生成汇编代码#

9.1 输出汇编文件#

Terminal window
gfortran -S main.f90

会生成 .s 文件,适合做底层分析。


10. 查看版本和帮助#

10.1 查看版本#

Terminal window
gfortran --version

10.2 查看帮助#

Terminal window
gfortran --help

11. 常见编译模板#

11.1 新手调试模板#

Terminal window
gfortran -g -O0 -Wall -Wextra -fcheck=all -cpp main.F90 -o main

11.2 正式编译模板#

Terminal window
gfortran -O2 -march=native -Wall main.f90 -o main

11.3 多文件项目模板#

Terminal window
gfortran -c mod1.f90
gfortran -c mod2.f90
gfortran -c main.f90
gfortran mod1.o mod2.o main.o -o app

12. 常见问题对应命令#

12.1 文件里用了 #include,但没生效#

Terminal window
gfortran -cpp main.f90 -o main

12.2 老代码扩展名不对,但内容是固定格式#

Terminal window
gfortran -ffixed-form legacy.f90 -o legacy

12.3 老代码扩展名不对,但内容是自由格式#

Terminal window
gfortran -ffree-form code.f -o code

12.4 想查数组越界#

Terminal window
gfortran -fcheck=all -g -O0 main.f90 -o main

13. 最实用的一条总结#

如果你平时只想记住几条,先记这几个:

Terminal window
gfortran main.f90 -o main
gfortran -c main.f90
gfortran -g -O0 -Wall -Wextra -fcheck=all main.f90 -o main
gfortran -cpp main.F90 -o main
gfortran -I./include -c main.f90

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

gFortran编译器使用指南
http://liuhuangzao.top/posts/环境配置/终端-gfortran/
作者
硫磺皂
发布于
2026-07-16
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
硫磺皂
干嘛
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
8
分类
2
标签
5
总字数
13,914
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.10
文章许可
CC BY-NC-SA 4.0