一、安装Fortran编译器
在CentOS上构建Fortran项目前,需先安装Fortran编译器。推荐使用gfortran(GNU Fortran Compiler,开源免费)或Intel Fortran Compiler(商业版,性能更优)。
yum包管理器安装,命令如下:sudo yum update -y # 更新系统软件包
sudo yum install epel-release -y # 安装EPEL仓库(提供额外软件包)
sudo yum install gcc-gfortran -y # 安装gfortran编译器
安装完成后,通过gfortran --version验证安装(显示版本信息则成功)。PATH、LD_LIBRARY_PATH),适用于需要高性能计算的场景。二、编写与编译Fortran代码
.f90(Fortran 90/95/2003/2008)或.f(Fortran 77)扩展名的源文件,例如hello.f90:program hello
implicit none ! 强制显式声明变量(避免拼写错误)
print *, 'Hello, World!' ! 输出语句
end program hello
gfortran编译源文件为可执行文件,命令如下:gfortran -o hello hello.f90 # 编译并链接生成可执行文件'hello'
./hello # 运行程序(输出'Hello, World!')
main.f90依赖module1.f90),需先编译模块文件(生成.mod和.o文件),再编译主程序并链接:gfortran -c module1.f90 # 编译模块文件(生成module1.o和module1.mod)
gfortran -c main.f90 # 编译主程序(生成main.o)
gfortran -o program main.o module1.o # 链接生成可执行文件
注意:模块文件需在主程序编译前生成,否则会报错。三、使用Makefile管理项目
对于复杂项目(多个源文件、依赖库),建议使用Makefile自动化编译流程。以下是一个通用示例:
# 编译器与选项
FC = gfortran # 使用gfortran编译器
FFLAGS = -Wall -g # 编译选项:显示所有警告(-Wall)、生成调试信息(-g)
# 源文件与目标文件
SRCS = main.f90 module1.f90 module2.f90 # 所有源文件
OBJS = $(SRCS:.f90=.o) # 替换为.o文件(如main.o)
TARGET = my_program # 可执行文件名
# 默认目标(生成可执行文件)
all: $(TARGET)
# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
$(FC) $(FFLAGS) -o $@ $^ # $@代表TARGET,$^代表所有OBJS
# 编译每个源文件为目标文件
%.o: %.f90
$(FC) $(FFLAGS) -c $< -o $@ # $<代表当前源文件
# 清理生成的文件
clean:
rm -f $(OBJS) $(TARGET) # 删除所有.o文件和可执行文件
使用方法:在终端运行make(编译项目)、make clean(清理生成的文件)。
四、版本控制(Git)
使用Git管理源代码,跟踪变更、协作开发:
sudo yum install git -y
git init # 初始化本地仓库
git add . # 添加所有文件到暂存区
git commit -m "Initial commit" # 提交初始版本
git clone https://github.com/username/repository.git
通过git push、git pull同步远程仓库代码。五、调试与性能优化
gdb(GNU Debugger)调试程序,步骤如下:
gfortran -g -o debug_program main.f90gdb ./debug_programrun(运行程序)、break main(在main函数设置断点)、next(执行下一行)、print variable(打印变量值)、quit(退出)。-O2:优化级别2(平衡编译时间与性能,推荐使用);-O3:优化级别3(更激进的优化,可能增加编译时间);-march=native:针对当前CPU架构优化(如-march=x86-64-v3)。gfortran -O2 -o optimized_program main.f90。六、代码格式化与模块化
gfortran的格式化工具保持代码风格一致:gfortran -C -o formatted_code main.f90 # -C选项格式化代码(缩进、空格等)
module)封装可复用的函数/子程序,提高代码可维护性。例如:! module1.f90(模块文件)
module math_operations
implicit none
public :: square, cube ! 声明公共函数
contains
function square(x) result(res)
real, intent(in) :: x
real :: res
res = x * x
end function square
function cube(x) result(res)
real, intent(in) :: x
real :: res
res = x * x * x
end function cube
end module math_operations
主程序调用模块:! main.f90(主程序)
program main
use math_operations ! 使用模块
implicit none
real :: num = 2.0
print *, 'Square:', square(num)
print *, 'Cube:', cube(num)
end program main
编译时需先编译模块文件(gfortran -c module1.f90),再编译主程序。七、项目管理工具
使用项目管理工具跟踪进度、分配任务:
八、文档与注释
!--(单行注释)或!* ... *(多行注释)添加注释,说明函数/子程序的功能、参数含义。例如:! 计算两个数的和
function add(a, b) result(sum)
real, intent(in) :: a, b ! 输入参数:a和b
real :: sum ! 输出结果:和
sum = a + b
end function add
Doxygen生成代码文档(支持Fortran),步骤如下:
sudo yum install doxygen -y;Doxyfile配置文件(doxygen -g);Doxyfile(设置INPUT为源文件目录、EXTENSION_MAPPING包含.f90);doxygen Doxyfile(生成HTML/PDF文档)。