Linux下Fortran程序如何部署
小樊
42
2025-12-20 02:49:01
Linux下Fortran程序部署全流程
一 环境准备与编译器安装
- 在Ubuntu/Debian系安装编译器:sudo apt update && sudo apt install gfortran;验证:gfortran --version。
- 在CentOS/RHEL系安装编译器:sudo yum install gcc-gfortran(或使用 dnf);验证:gfortran --version。
- 可选:安装OpenMP支持(并行):sudo apt-get install libomp-dev;编译时加 -fopenmp。
- 可选:安装MPI并行环境:sudo apt-get install mpich;编译/运行用 mpif90 / mpiexec。
二 构建与运行
- 单文件程序
- 编译:gfortran hello.f90 -o hello
- 运行:./hello
- 多文件程序
- 编译:gfortran -o app main.f90 utils.f90 io.f90
- 运行:./app
- 常用编译选项
- 开启优化与告警:gfortran -O2 -Wall -o app main.f90
- 调试信息:gfortran -g -O0 -o app main.f90
- 并行示例
- OpenMP:gfortran -fopenmp -o parallel parallel.f90;运行:./parallel
- MPI:mpif90 -o mpi_app mpi_app.f90;运行:mpiexec -n 4 ./mpi_app
三 依赖库与第三方组件
- 安装依赖(示例)
- Ubuntu:sudo apt-get install libomp-dev mpich
- CentOS:sudo yum install gcc-gfortran(按需安装其他库)
- 第三方库(如NetCDF/HDF5)
- 源码编译安装到自定义前缀(如:/usr/local/netcdf)
- 编译时链接:gfortran app.f90 -o app -I/usr/local/netcdf/include -L/usr/local/netcdf/lib -lnetcdff -lnetcdf -lhdf5 -lz
- 运行期库路径:将 /usr/local/netcdf/lib 加入环境变量(见下一节)
四 上线部署与交付
- 本机或服务器直接部署
- 打包:tar czvf app.tar.gz app
- 上传:scp app.tar.gz user@server:/opt/app
- 在服务器解压运行:tar xzvf app.tar.gz && ./app
- 容器化交付(Docker)
示例 Dockerfile(以 CentOS 基础镜像为例):
FROM centos:latest
RUN yum update -y && yum groupinstall “Development Tools” -y && yum install -y gfortran
WORKDIR /app
COPY . /app
RUN gfortran -o my_program my_program.f90
CMD [“./my_program”]
构建与运行:docker build -t my-fortran-app .;docker run -it my-fortran-app
五 常见问题与实用建议
- 库找不到(运行时报 libxxx.so 不存在)
- 临时:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 持久:写入 ~/.bashrc 或系统级 profile;发行版可用 ldconfig 管理库缓存。
- 并行运行失败
- OpenMP:确认编译带了 -fopenmp,且运行环境允许线程数(如 OMP_NUM_THREADS)。
- MPI:使用 mpif90 编译,mpiexec/mpirun 启动,进程数与资源匹配。
- 构建系统
- 推荐使用 Fortran Package Manager(fpm) 管理依赖与构建,简化多文件与测试流程。
- 云服务器场景
- 通过 SSH 登录实例,完成编译器安装、构建与运行;适合批处理与定时任务。