温馨提示×

Ubuntu上Fortran开发环境怎样搭建

小樊
38
2025-12-28 03:27:48
栏目: 智能运维

Ubuntu上搭建Fortran开发环境

一 安装编译器与基础工具

  • 更新软件源并安装基础开发工具与GNU Fortran编译器(gfortran):
    • 命令:sudo apt update && sudo apt install -y build-essential gfortran
    • 验证:gfortran --version(应输出版本号)
  • 如需特定版本(如gfortran-7/9/10/11),可添加工具链PPA并选择版本:
    • 命令:sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt update
    • 安装示例:sudo apt install gfortran-11
    • 多版本切换:sudo update-alternatives --config gfortran,按提示选择默认版本

二 编写与构建第一个程序

  • 创建源文件:nano hello.f90,写入代码:
    • program hello implicit none print *, ‘Hello, World!’ end program hello
  • 编译与运行:
    • 编译:gfortran -o hello hello.f90
    • 运行:./hello(终端应输出 Hello, World!)

三 科学计算常用库与并行

  • 常用数值库(开发包):
    • BLAS:sudo apt install libblas-dev
    • LAPACK:sudo apt install liblapack-dev
    • FFTW:sudo apt install libfftw3-dev
    • 链接示例:gfortran -o my_program my_program.f90 -llapack -lblas
  • 并行与高性能:
    • OpenMP(共享内存多线程):在代码中加入指令(如 !$omp parallel do),编译:gfortran -fopenmp -o parallel_program parallel_program.f90
    • MPI(分布式内存):安装与编译运行
      • 安装:sudo apt install libopenmpi-dev openmpi-bin
      • 编译:mpif90 -o mpi_program mpi_program.f90
      • 运行:mpirun -np 4 ./mpi_program(示例使用4进程)

四 项目构建与IDE

  • 使用Fortran包管理器fpm(Fortran Package Manager)简化依赖与构建:
    • 下载预编译二进制(示例版本0.9.0):wget https://github.com/fortran-lang/fpm/releases/download/v0.9.0/fpm-0.9.0-linux-x86_64.tar.gz
    • 解压并加入PATH:tar -xzf fpm-0.9.0-linux-x86_64.tar.gz && echo ‘export PATH=$PATH:/path/to/fpm-0.9.0-linux-x86_64/bin’ >> ~/.bashrc && source ~/.bashrc
  • 编辑器与IDE(可选):
    • 轻量编辑器:Visual Studio Code、Vim、Nano
    • 传统IDE:EclipseNetBeansQt Creator
    • 建议安装Fortran语法高亮与调试扩展,提高开发效率

五 进阶 Intel Fortran 与常见问题

  • 安装Intel oneAPI HPC Toolkit(包含ifort/ifx)以替代或对比gfortran:
    • 从Intel官网获取安装脚本,按向导安装;安装后执行:source /opt/intel/oneapi/setvars.sh
    • 验证:ifort -v 或 ifx -v(输出版本信息)
  • 常见问题与建议:
    • 多版本共存与切换优先用:sudo update-alternatives --config gfortran
    • 链接库失败优先检查是否安装对应**-dev**包,并确认链接顺序(如先-llapack后-lblas)
    • 并行运行报MPI错误,确认已安装libopenmpi-dev并使用mpirun/mpiexec启动

0