Ubuntu Fortran程序部署全流程指南
在Ubuntu上部署Fortran程序的第一步是安装Fortran编译器。gfortran(GNU Fortran Compiler)是Ubuntu默认支持的免费编译器,兼容Fortran 77、90、95及更高标准。
通过以下命令安装最新版本:
sudo apt update && sudo apt install gfortran
安装完成后,验证编译器是否可用:
gfortran --version
输出应显示gfortran的版本信息(如GNU Fortran (Ubuntu 13.2.0-2ubuntu1) 13.2.0)。
使用文本编辑器(如nano、vim或gedit)创建Fortran源文件。以经典的“Hello World”程序为例:
nano hello.f90
输入以下代码(注意缩进和语法规范):
program hello
implicit none ! 强制显式声明变量,避免隐式错误
print *, 'Hello, World!' ! 输出字符串
end program hello
保存并退出编辑器(nano中按Ctrl+O保存,Ctrl+X退出)。
使用gfortran将源代码编译为可执行文件。基本命令格式为:
gfortran [选项] 源文件.f90 -o 可执行文件名
gfortran hello.f90 -o hello
gfortran -g hello.f90 -o hello_debug
gfortran -O2 hello.f90 -o hello_optimized
编译成功后,当前目录会生成指定的可执行文件(如hello)。
在终端中执行以下命令运行可执行文件:
./hello
若程序无误,终端将输出:
Hello, World!
注意:./表示当前目录,Ubuntu默认不将当前目录加入系统路径,因此必须显式指定。
对于包含多个源文件的项目,手动编译会变得繁琐。Makefile是自动化编译的工具,通过定义规则减少重复操作。
创建Makefile文件(注意首字母大写):
nano Makefile
输入以下内容(以hello.f90为例):
FC = gfortran ! 编译器
CFLAGS = -Wall -O2 ! 编译选项:显示所有警告、优化级别2
TARGET = hello ! 目标可执行文件名
SRCS = hello.f90 ! 源文件列表
OBJS = $(SRCS:.f90=.o) ! 目标文件列表(.f90替换为.o)
all: $(TARGET) ! 默认目标
$(TARGET): $(OBJS) ! 链接目标文件生成可执行文件
$(FC) $(OBJS) -o $@
%.o: %.f90 ! 编译每个源文件为目标文件
$(FC) $(CFLAGS) -c $< -o $@
clean: ! 清理生成的文件
rm -f $(OBJS) $(TARGET)
保存后,在终端运行以下命令:
make # 编译程序
./hello # 运行程序
make clean # 清理生成的文件
Makefile会根据文件修改时间自动判断是否需要重新编译,大幅提高开发效率。
若需要将程序分享给其他用户,可将项目打包为压缩文件或通过安装脚本部署。
mkdir -p myprogram/{bin,src} # 创建目录结构(bin存放可执行文件,src存放源代码)
cp hello myprogram/bin/ # 复制可执行文件到bin目录
cp hello.f90 myprogram/src/ # 复制源代码到src目录
tar -czvf myprogram.tar.gz myprogram/ # 打包为tar.gz文件
用户收到压缩包后,解压并运行:
tar -xzvf myprogram.tar.gz
cd myprogram/bin
./hello
创建install.sh脚本(赋予执行权限):
nano install.sh
输入以下内容(将程序安装到/opt/myprogram目录,需管理员权限):
#!/bin/bash
INSTALL_DIR="/opt/myprogram"
mkdir -p "$INSTALL_DIR/bin"
cp myprogram/hello "$INSTALL_DIR/bin/"
echo "Installation completed. You can run the program with: $INSTALL_DIR/bin/hello"
赋予执行权限并运行:
chmod +x install.sh
sudo ./install.sh
用户可通过/opt/myprogram/bin/hello运行程序。
若程序依赖外部库(如LAPACK、BLAS或自定义Fortran库),需提前安装并在编译时链接。
使用apt安装常见科学计算库:
sudo apt install liblapack-dev libblas-dev libfftw3-dev
编译时通过-L指定库文件路径,-l指定库名称(去掉lib前缀和.a/.so后缀):
gfortran -o myprogram myprogram.f90 -L/usr/lib -llapack -lblas
若使用自定义Fortran库(如libmylib.a),需将库文件放在指定目录(如/usr/local/lib),并更新动态链接器缓存:
sudo cp libmylib.a /usr/local/lib/
sudo ldconfig
编译时链接自定义库:
gfortran -o myprogram myprogram.f90 -L/usr/local/lib -lmylib
若库文件不在系统默认路径,需通过LD_LIBRARY_PATH环境变量指定路径:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
为永久生效,可将上述命令添加到~/.bashrc文件中。
end program是否匹配)、变量声明(implicit none避免隐式错误)。-L选项),库名称是否拼写正确(-l选项)。chmod +x hello。dos2unix转换文件格式(sudo apt install dos2unix && dos2unix your_code.f90),并修改文件路径分隔符(\改为/)。通过以上步骤,你可以在Ubuntu系统上完成Fortran程序的编译、运行和部署,满足从简单脚本到复杂项目的需求。