Ubuntu Fortran模块如何使用
导读:Ubuntu 下 Fortran 模块使用指南 一 环境准备与编译要点 安装编译器与基础工具:在 Ubuntu 上安装 gfortran 与常用构建工具(如 build-essential),用于编译与链接 Fortran 模块与程序。...
Ubuntu 下 Fortran 模块使用指南
一 环境准备与编译要点
- 安装编译器与基础工具:在 Ubuntu 上安装 gfortran 与常用构建工具(如 build-essential),用于编译与链接 Fortran 模块与程序。
- 命令:
sudo apt update & & sudo apt install gfortran build-essential
- 命令:
- 模块与编译的关键点:
- 每个模块会生成同名但扩展名为 .mod 的“模块文件”,其中包含接口与派生类型信息;同一源码目录下的其他程序或模块在使用该模块前,需要能访问到这个 .mod 文件。
- 编译顺序:先编译定义模块的源文件(生成 .o 与 .mod),再编译使用模块的程序(通过 -I 指定模块搜索路径,若有多个目录可用多次 -I)。
- 链接阶段:若模块中使用了外部库(如 NetCDF),需按库的要求链接相应库文件(如 -lnetcdff -lnetcdf)。
二 最小示例 定义与使用模块
- 目录结构建议:将所有源文件放在同一目录(如当前目录),便于模块文件被找到。
- 模块文件 m_math.f90
module m_math implicit none contains function add(a, b) result(r) real, intent(in) :: a, b real :: r r = a + b end function add end module m_math - 主程序 main.f90
program main use m_math, only: add ! 引入模块中的 add implicit none real :: x, y, z x = 1.0 y = 2.0 z = add(x, y) print *, 'add = ', z end program main - 编译与运行
# 1) 编译模块 gfortran -c m_math.f90 -o m_math.o # 2) 编译主程序(当前目录已生成 m_math.mod,无需额外 -I) gfortran -c main.f90 -o main.o # 3) 链接生成可执行文件 gfortran main.o m_math.o -o main.exe # 4) 运行 ./main.exe - 要点
use m_math必须在implicit none之后(或同一位置之后),这是 Fortran 的语法约束。- 多文件工程建议统一放在同一目录,或显式用 -I< 模块目录> 指定模块搜索路径。
三 使用外部库的模块 以 NetCDF 为例
- 安装库(Ubuntu 22.04/24.04 等常见版本可直接用包管理器):
sudo apt update sudo apt install libnetcdf-dev libnetcdff-dev - 验证安装与获取编译参数:
nc-config --version # 查看 NetCDF-C 版本 nf-config --version # 查看 NetCDF-Fortran 版本 - 示例程序 test_nc.f90
program test_nc use netcdf ! 使用 NetCDF Fortran 模块 implicit none print *, 'NetCDF-Fortran version: ', nf90_inq_libvers() end program test_nc - 编译与运行(推荐使用库提供的配置工具自动给出编译与链接参数)
# 方式一:使用 nf-config 自动参数 gfortran test_nc.f90 `nf-config --fflags --flibs` -o test_nc.exe # 方式二:手动指定包含路径与库(路径因系统而异) gfortran test_nc.f90 -I/usr/include -L/usr/lib -lnetcdff -lnetcdf -o test_nc.exe ./test_nc.exe - 说明
use netcdf会触发对 netcdf.mod 的查找;若 .mod 不在默认搜索路径,需用 -I 指定其所在目录。- 链接顺序在部分平台上较敏感,通常将 -lnetcdff 放在 -lnetcdf 之前更稳妥。
四 工程组织与构建工具
- 多模块工程建议将模块与使用它们的程序分目录管理,例如:
project/ ├─ modules/ │ └─ m_*.f90 ├─ prog/ │ └─ main.f90 └─ build/- 编译命令示例:
# 编译模块 gfortran -c modules/m_math.f90 -o build/m_math.o # 编译主程序(指定模块目录) gfortran -c prog/main.f90 -I modules -o build/main.o # 链接 gfortran build/main.o build/m_math.o -o build/main.exe
- 编译命令示例:
- 使用 fpm(Fortran Package Manager) 可显著简化模块解析与构建:
- 安装 fpm 后,在工程根目录执行
fpm build、fpm run即可自动处理模块依赖与编译顺序,适合中小型项目与快速原型开发。
- 安装 fpm 后,在工程根目录执行
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Fortran模块如何使用
本文地址: https://pptw.com/jishu/779267.html
