CentOS 上部署 Fortran 项目的实用流程
一 环境准备
- 更新系统并安装编译工具与编译器:
- 安装开发工具组与 gfortran:sudo yum groupinstall “Development Tools” -y && sudo yum install gcc-gfortran -y
- 验证安装:gfortran --version
- 如使用 Intel Fortran(ifort/ifx),按官方指引安装并设置环境变量,例如:source /opt/intel/oneapi/setvars.sh
- 建议同时安装常用构建工具:sudo yum install make git cmake -y
二 依赖库与环境变量
- 常见依赖库包括:NetCDF、HDF5、MPICH、Jasper、libpng、zlib 等;若项目使用 MPI 进行并行,需安装并配置对应的 MPI 库(如 MPICH)。
- 源码编译第三方库时,通常使用:./configure --prefix=/usr/local/<库名> && make && sudo make install
- 设置环境变量(示例为库安装到 /usr/local/<库名>):
- 在 ~/.bashrc 或 /etc/profile.d/.sh 中添加:
- export PATH=/usr/local/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/<库名>/lib:$LD_LIBRARY_PATH
- export CPPFLAGS=-I/usr/local/<库名>/include
- export LDFLAGS=-L/usr/local/<库名>/lib
- 使配置生效:source ~/.bashrc 或 source /etc/profile.d/.sh
三 构建与运行
- 简单程序(单文件)示例:
- 编译:gfortran hello.f90 -o hello
- 运行:./hello
- 使用 Makefile 管理多文件/多步骤构建(示例要点):
- 定义编译器与编译选项:FC=gfortran,FFLAGS=-Wall -O2
- 规则示例:program: main.o … 链接阶段加入所需库:-L/usr/local/<库名>/lib -l<库名> [-lmpi]
- 并行程序(MPI)示例:
- 编译:mpif90 -o myprog myprog.f90 -L/usr/local/mpich/lib -lmpich
- 运行:mpirun -np 4 ./myprog
- 链接外部库时的常见顺序与参数:gfortran … -L<库路径> -l<库名> -l<依赖库> …;必要时配合 -I<头文件路径> 与 -L<库路径> 使用
四 打包发布与上线
- 打包可执行文件与必要资源:tar -czvf app.tar.gz hello_world
- 传输到目标服务器:scp app.tar.gz user@host:/opt/app
- 在目标服务器解压并运行:tar -xzvf app.tar.gz && ./hello_world
- 上线建议:
- 使用专用运行账号与目录(如 /opt/),设置最小权限
- 采用 systemd 服务实现守护与开机自启(示例见下节)
- 固化依赖与运行环境(记录库版本、编译参数;必要时使用容器化)
五 可选 Docker 部署
- 示例 Dockerfile(基于 CentOS,适用于多数 Fortran 程序):
- FROM centos:latest
- RUN yum update -y && yum groupinstall “Development Tools” -y && yum install -y gfortran
- WORKDIR /app
- COPY . /app
- RUN gfortran -O2 -o my_program my_program.f90
- CMD [“./my_program”]
- 构建与运行:
- docker build -t my-fortran-app .
- docker run --rm my-fortran-app
- 如需第三方库,可在 Dockerfile 中先安装对应 RPM 包或源码编译到镜像内