CentOS 下 Fortran 项目的构建与管理
一 环境准备与编译器安装
- 更新系统并安装基础开发工具与编译器:
- 安装开发工具组与 gfortran:sudo yum groupinstall “Development Tools” -y && sudo yum install gcc-gfortran -y
- 验证安装:gfortran --version
- 可选:安装 Intel Fortran(ifort) 或 Visual Studio Code + Fortran 扩展(如 Fortran Language Server、linter-gfortran)以提升开发体验。
二 项目结构与构建方式
- 推荐目录结构:
- 源码:src/(如 main.f90、mod1.f90、sub1.f90)
- 目标:build/(.o 文件)
- 二进制:bin/(可执行文件)
- 依赖/库:lib/(第三方 .a/.so)
- 构建配置:Makefile、config.mk
- 直接编译与分离编译:
- 直接编译:gfortran -O2 -Wall src/main.f90 src/mod1.f90 src/sub1.f90 -o bin/app
- 分离编译(便于增量构建):
- 编译:gfortran -O2 -Wall -c src/mod1.f90 -o build/mod1.o
- 链接:gfortran build/mod1.o build/sub1.o src/main.f90 -o bin/app
三 使用 Make 进行自动化构建
- 最小可用 Makefile(支持增量构建与清理):
FC := gfortran
FFLAGS := -O2 -Wall
SRCDIR := src
BUILDDIR:= build
BINDIR := bin
SRCS := $(wildcard $(SRCDIR)/*.f90)
OBJS := $(patsubst $(SRCDIR)/%.f90,$(BUILDDIR)/%.o)
TARGET := $(BINDIR)/app
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) | $(BINDIR)
$(FC) $(FFLAGS) -o $@ $^
$(BUILDDIR)/%.o: $(SRCDIR)/%.f90 | $(BUILDDIR)
$(FC) $(FFLAGS) -c $< -o $@
$(BUILDDIR) $(BINDIR):
mkdir -p $@
clean:
rm -rf $(BUILDDIR) $(BINDIR)
- 使用要点:
- 规则格式为:target: dependencies 后跟一行以Tab缩进的命令;make 会按依赖关系只重建必要目标。
- 通过变量(如 FC/FFLAGS/SRCS/OBJS)集中管理工具与选项,便于切换编译器与编译参数。
四 第三方库与依赖管理
- 常见做法:
- 使用发行版仓库安装系统库(如 MPICH、NetCDF 等),或在 /usr/local 下编译安装自有/上游库。
- 构建时通过环境变量与链接器选项指定头文件与库路径:
- 配置环境(写入 ~/.bashrc 或构建脚本):
- export CPPFLAGS=“-I/usr/local/include”
- export LDFLAGS=“-L/usr/local/lib”
- 运行时库路径:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 编译链接示例:
- gfortran -O2 -Wall src/main.f90 -I/usr/local/include -L/usr/local/lib -lnetcdff -lnetcdf -o bin/app
- 建议将第三方库统一放入项目 lib/,并在 Makefile 中以变量管理(如 LIBDIR/LIBS),便于跨环境复现构建。
五 打包发布与部署
- 打包发布:
- 将可执行文件与所需运行库/配置打包:
- tar -czvf app.tar.gz bin/ lib/ config/
- 解压运行:tar -xzvf app.tar.gz && ./bin/app
- 容器化部署(可选,便于环境一致与分发):