Ubuntu上Fortran如何部署应用
导读:Ubuntu上部署Fortran应用的实用流程 一 环境准备与编译器安装 更新索引并安装 GNU Fortran 编译器(gfortran): 命令:sudo apt update && sudo apt install...
Ubuntu上部署Fortran应用的实用流程
一 环境准备与编译器安装
- 更新索引并安装 GNU Fortran 编译器(gfortran):
- 命令:
sudo apt update & & sudo apt install gfortran
- 命令:
- 可选:安装构建工具与常用依赖(便于后续联编库与工程化构建):
- 命令:
sudo apt install build-essential cmake
- 命令:
- 验证安装:
- 命令:
gfortran --version(输出版本号即正常)
- 命令:
二 构建与运行最简示例
- 源码:创建文件 hello.f90
program hello print *, "Hello, Fortran on Ubuntu!" end program hello - 编译与运行:
- 编译:
gfortran -O2 -Wall -o hello hello.f90 - 运行:
./hello
- 编译:
- 说明:
- 源文件扩展名可为 .f90 / .f95 / .f
- 建议开启优化与告警(如 -O2 -Wall)以提升性能与可维护性
三 依赖库与工程化部署
- 使用系统库(以 NetCDF 为例)
- 安装库与开发包:
- 命令:
sudo apt install libnetcdf-dev libnetcdff-dev
- 命令:
- 编译链接(使用 nf-config 自动给出编译与链接参数):
- 命令:
gfortran test.f90 \nf-config --fflags --flibs` -o test`
- 命令:
- 运行:
./test
- 安装库与开发包:
- 使用构建系统(以 CMake 为例)
- 示例 CMakeLists.txt(单源文件,链接 NetCDF-Fortran)
cmake_minimum_required(VERSION 3.16) project(hello Fortran) find_package(NetCDF REQUIRED Fortran) add_executable(hello hello.f90) target_link_libraries(hello ${ NETCDF_LIBRARIES} ) target_include_directories(hello PRIVATE ${ NETCDF_INCLUDE_DIRS} ) - 构建与安装:
- 命令:
mkdir -p build & & cd build & & cmake -DCMAKE_INSTALL_PREFIX=/opt/helloapp .. & & make -j$(nproc) & & sudo make install
- 命令:
- 示例 CMakeLists.txt(单源文件,链接 NetCDF-Fortran)
- 使用包管理器(可选)
- 对于更复杂的依赖管理与可重复构建,可使用 Fortran Package Manager(fpm) 进行构建与打包分发
四 多文件工程与发布打包
- 多源文件编译(示例:mod.f90 提供模块,main.f90 使用模块)
- 命令:
gfortran -c mod.f90 -o mod.o & & gfortran -c main.f90 -o main.o & & gfortran -o app main.o mod.o
- 命令:
- 发布包结构建议
- 目录:
app/(可执行文件)、lib/(第三方动态库)、share/(文档/示例)、bin/(启动脚本)、etc/(配置) - 启动脚本示例(bin/run.sh)
#!/usr/bin/env bash HERE=$(cd "$(dirname "$0")" & & pwd) export LD_LIBRARY_PATH="$HERE/../lib:$LD_LIBRARY_PATH" exec "$HERE/../app/hello" "$@"
- 目录:
- 系统级安装与卸载
- 安装:
sudo make install(配合 CMake 的 install 目标或自定义 Makefile) - 卸载:提供
uninstall目标,或记录安装文件清单后批量删除
- 安装:
- 交付物清单
- 可执行文件、依赖库、启动脚本、配置与示例、README/许可证、变更记录(Changelog)
五 常见问题与处理
- 找不到库或头文件
- 使用包管理器安装对应的 -dev 包;或编译时显式指定
-I< 头文件路径> -L< 库路径> -l< 库名>;链接 NetCDF-Fortran 时优先用nf-config --fflags --flibs获取参数
- 使用包管理器安装对应的 -dev 包;或编译时显式指定
- 老代码编译告警或错误
- 新版本 gfortran 对接口检查更严格,若出现“argument mismatch”等,可在受控范围内添加编译选项(如 -fallow-argument-mismatch)以完成迁移,同时逐步修正接口
- 运行报找不到共享库
- 设置环境变量:
export LD_LIBRARY_PATH=/opt/helloapp/lib:$LD_LIBRARY_PATH,或在/etc/ld.so.conf.d/下添加库路径后执行sudo ldconfig
- 设置环境变量:
- 多文件工程链接顺序
- 规则一般为:目标文件在前,所依赖的库在后;若有循环依赖,重复库名或调整顺序以通过链接器
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Fortran如何部署应用
本文地址: https://pptw.com/jishu/789301.html
