1. 安装兼容的Fortran编译器
在Debian系统上,GNU Fortran(gfortran) 是首选的兼容编译器,支持Fortran 95、2003、2008等标准,且与大多数Linux发行版兼容。通过包管理器安装最新稳定版:
sudo apt update sudo apt install gfortran 安装后通过 gfortran --version 验证安装,确保编译器能正常识别。
2. 使用标准Fortran语言特性
避免使用特定编译器(如Intel Fortran的!$OMP并行指令)或操作系统(如Windows的__stdcall调用约定)的扩展特性,优先采用Fortran标准语法(如module模块、use语句、intent(in/out)接口说明符)。例如,用module封装共享变量和子程序,而非直接使用全局变量,提升代码可移植性。
3. 统一符号命名风格
Fortran编译器可能自动在函数名后添加下划线(如ncdinq变为ncdinq_),导致链接时找不到符号。通过以下方法解决:
nm -D /path/to/library.so | grep function_name查看实际符号(如ncdinq是否有下划线);-fno-underscoring禁止编译器添加下划线;若库中有下划线,确保代码中调用时添加下划线(如call ncdinq_())。4. 正确链接依赖库
若程序依赖外部库(如NetCDF、LAPACK),需通过编译选项指定库路径和名称:
nf-config for NetCDF)获取链接选项,例如:FFLAGS = $(shell nf-config --flibs) # 获取NetCDF-Fortran库的链接选项 LIBS = -llapack -lblas # 添加LAPACK/BLAS库 -L/path/to/library -lname),例如:gfortran program.f -o program $(shell nf-config --flibs) -L/usr/lib/x86_64-linux-gnu -llapack -lblas 5. 配置MPI环境的Fortran支持
若使用MPI并行计算,需确保MPI实现(如Open MPI)包含Fortran组件:
libopenmpi-dev(包含Fortran支持),安装后mpif90(MPI Fortran编译器)会自动生成;--enable-mpi-fortran选项,例如:./configure --enable-mpi-fortran make && sudo make install 安装后检查mpif90是否在PATH中(如which mpif90),若不在,添加MPI的bin目录到PATH(如export PATH=/usr/lib/openmpi/bin:$PATH)。
6. 测试与持续集成
在不同Debian版本(如Debian 11、12)和编译器版本(如gfortran 11、12)上运行测试,确保代码兼容性:
-Wall -Wextra开启所有警告,修复潜在问题;jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Debian environment run: sudo apt update && sudo apt install -y gfortran - name: Compile and test run: | gfortran -o my_program my_program.f90 ./my_program