一、安装Fortran编译器
Fortran程序在Linux上的部署首先需要安装编译器,gfortran(GNU Fortran Compiler)是Linux系统中最常用的开源编译器,支持Fortran 77/90/95/2003/2008等标准。
sudo apt update && sudo apt install gfortran
sudo yum install gcc-gfortran # CentOS 7及以下
sudo dnf install gcc-gfortran # CentOS 8及以上
安装完成后,通过gfortran --version验证安装是否成功,若输出编译器版本信息则说明安装正确。
二、编写Fortran程序
使用文本编辑器(如nano、vim或VS Code)创建Fortran源文件,推荐使用.f90扩展名(支持Fortran 90及以上标准)。例如,创建hello.f90文件,内容如下:
program hello
print *, "Hello, World!" ! 输出Hello World
end program hello
保存文件后,可通过cat hello.f90命令检查内容是否正确。
三、编译Fortran程序
打开终端,导航到源文件所在目录,使用gfortran编译源文件生成可执行文件。基本编译命令如下:
gfortran hello.f90 -o hello
-o hello:指定输出的可执行文件名为hello(可自定义,如myprogram)。gfortran example.f90 -o example -L/path/to/library -llibrary_name
其中-L指定库文件路径,-l指定库名(去掉前缀lib和后缀.so/.a)。
四、运行Fortran程序
编译成功后,在终端中执行以下命令运行程序:
./hello
若程序输出Hello, World!,则说明部署成功。注意:./表示当前目录,Linux系统默认不搜索当前目录下的可执行文件,需显式指定路径。
五、可选:使用Fortran包管理器(FPM)简化流程
FPM(Fortran Package Manager)是Fortran生态中的现代化构建工具,可简化项目构建、依赖管理和分发。安装FPM的步骤如下:
wget https://github.com/fortran-lang/fpm/releases/download/v0.9.0/fpm-0.9.0-linux-x86_64.tar.gz
tar -xzf fpm-0.9.0-linux-x86_64.tar.gz
sudo mv fpm-0.9.0-linux-x86_64/fpm /usr/local/bin/ # 移动至系统路径
fpm new myproject # 创建名为myproject的Fortran项目
cd myproject
fpm build # 编译项目
fpm run # 运行项目
FPM会自动处理依赖关系(如通过fpm.toml配置文件声明的依赖),无需手动配置编译选项。
六、可选:打包发布Fortran程序
若需将程序分发给其他用户,可将程序及依赖打包为压缩文件。步骤如下:
mkdir -p myprogram_release/bin
cp hello myprogram_release/bin/
install.sh(赋予可执行权限):cat > install.sh << 'EOF'
#!/bin/bash
sudo mkdir -p /opt/myprogram
sudo cp bin/hello /opt/myprogram/
sudo chmod +x /opt/myprogram/hello
echo "Installation completed. Run with /opt/myprogram/hello"
EOF
chmod +x install.sh
tar -czvf myprogram_release.tar.gz myprogram_release/
用户收到压缩包后,解压并运行./install.sh即可完成安装,通过/opt/myprogram/hello运行程序。
七、可选:配置并行计算支持(OpenMP)
若程序需要并行计算,可使用OpenMP库。步骤如下:
sudo apt install libomp-dev # Ubuntu/Debian
sudo yum install libomp-devel # CentOS/RHEL
gfortran -fopenmp parallel_example.f90 -o parallel_example
./parallel_example
程序会自动使用多线程并行执行(线程数由系统决定,可通过OMP_NUM_THREADS环境变量调整)。