1. 安装Fortran编译器
在CentOS上管理Fortran依赖库前,需先安装Fortran编译器(如gfortran)。通过以下命令安装:
sudo yum install gcc-gfortran -y
安装完成后,可通过gfortran --version验证是否安装成功。
2. 安装常见Fortran依赖库
CentOS默认仓库中包含多个常用Fortran库,可通过yum包管理器安装:
BLAS(基础子程序)和LAPACK(线性代数包)是科学计算的基石,安装命令为:sudo yum install blas blas-devel lapack lapack-devel -y
OpenBLAS是BLAS的优化实现,提升计算性能,安装命令为:sudo yum install openblas openblas-devel -y
SCALAPACK是LAPACK的并行版本,适用于多处理器系统,安装命令为:sudo yum install scalapack scalapack-devel -y
OpenMPI的开发库:sudo yum install openmpi openmpi-devel -y
HDF5用于存储大规模科学数据,安装命令为:sudo yum install hdf5 hdf5-devel -y
以上库的安装路径通常为/usr/lib(静态库.a)或/usr/lib64(共享库.so)。
3. 配置环境变量
若安装了Intel MKL等第三方库,或需自定义库路径,需配置环境变量:
~/.bashrc(用户级)或/etc/profile(系统级),添加以下内容:# 添加库路径到LD_LIBRARY_PATH(动态链接库搜索路径)
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# 添加头文件路径到CPATH(编译器头文件搜索路径)
export CPATH=/usr/local/include:$CPATH
# 若安装Intel MKL,需添加其路径(示例)
# export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:$LD_LIBRARY_PATH
# export CPATH=/opt/intel/mkl/include:$CPATH
source ~/.bashrc使修改立即生效。4. 验证依赖库安装
通过编写简单的Fortran程序验证库是否正确安装。例如,使用LAPACK的dgesv函数(求解线性方程组):
program test_lapack
implicit none
integer, parameter :: n = 5
double precision :: a(n, n), b(n)
integer :: ipiv(n), info
! 初始化矩阵a(5x5)和向量b(5x1)
a = reshape([1d0, 2d0, 3d0, 4d0, 5d0, 6d0, 7d0, 8d0, 9d0, 10d0, 11d0, 12d0, 13d0, 14d0, 15d0, 16d0, 17d0, 18d0, 19d0, 20d0, 21d0, 22d0, 23d0, 24d0, 25d0], shape(a))
b = [1d0, 2d0, 3d0, 4d0, 5d0]
! 调用LAPACK的dgesv函数(求解Ax=b)
call dgesv(n, 1, a, n, ipiv, b, n, info)
! 输出结果
if (info == 0) then
print *, 'Solution:', b
else
print *, 'Error:', info
end if
end program test_lapack
编译并运行:
gfortran -o test_lapack test_lapack.f90 -llapack -lblas
./test_lapack
若输出Solution:及正确结果,说明LAPACK和BLAS库安装成功。
5. 源代码编译安装(可选)
若默认仓库中没有所需库(如特定版本的Intel MKL),可从源码编译安装:
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/17035/l_mkl_2021.4.2.tgz
tar -xzf l_mkl_2021.4.2.tgz
cd l_mkl_2021.4.2
sudo ./install.sh
LD_LIBRARY_PATH和CPATH(参考步骤3)。6. 管理用户自定义库
若自行编译Fortran库(如libexample.so),需将库文件存放到标准路径(如/usr/local/lib),并更新动态链接库缓存:
sudo cp libexample.so /usr/local/lib/
sudo ldconfig
-L指定库路径,-l指定库名:gfortran -o main main.f90 -L/usr/local/lib -lexample
其中,main.f90是调用库函数的Fortran程序,-lexample表示链接libexample.so。