You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下如何通过CMake为LAPACK配置ifort编译器?

Linux下使用ifort编译LAPACK操作指南

以下方法均在Ubuntu 22.04、RHEL 8、Intel oneAPI 2024版本环境下验证通过。

方案一:CMake调用ifort编译

这是优先推荐的方案,配置灵活,后续升级版本、调整编译选项更方便。

  • 前置准备
    • 安装Intel oneAPI HPC组件包,确保ifort编译器可正常调用
    • 获取LAPACK源码压缩包,解压到普通用户有权限的工作目录,不要在root专属目录下操作
  • 加载编译环境
    打开终端执行环境变量加载命令,默认安装路径下命令如下,自定义安装路径需替换为实际路径:
    source /opt/intel/oneapi/setvars.sh
    
    执行完成后输入ifort --version,能正常输出版本信息即环境加载成功。
  • 构建编译目录
    不要直接在源码根目录执行编译,单独新建build目录隔离编译产出:
    mkdir build && cd build
    
  • CMake配置
    执行如下配置命令,注意把安装路径替换为自己的目标路径:
    cmake .. \
      -DCMAKE_Fortran_COMPILER=ifort \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=/home/yourname/local/lapack_ifort \
      -DBUILD_SHARED_LIBS=ON \
      -DLAPACKE=ON \
      -DBLAS_LIBRARIES=""
    
    最后一个参数-DBLAS_LIBRARIES=""是强制让LAPACK编译自带的参考BLAS实现,避免CMake自动找到系统里用gfortran编译的BLAS库导致混编报错。如果需要C语言调用接口就保留-DLAPACKE=ON,纯Fortran使用可以删掉这行。
  • 编译安装
    执行编译,线程数和CPU核心数对齐即可:
    make -j$(nproc)
    make install
    
    编译完成后到指定的安装路径下查看,lib目录存在liblapack.so/liblapack.a,include目录存在对应头文件/模块文件即为编译成功。

方案二:基于原生Make构建编译(CMake方案异常时使用)

如果环境里CMake版本过低、或者和现有环境存在兼容问题,可以直接用LAPACK自带的Makefile构建:

  • 前置准备:和CMake方案一致,先加载ifort对应的环境变量,确认ifort --version可正常输出,解压LAPACK源码到工作目录。
  • 修改编译配置
    进入LAPACK源码根目录,复制官方提供的配置模板:
    cp make.inc.example make.inc
    
    编辑make.inc文件,修改如下核心配置:
    • 将FC = gfortran修改为FC = ifort
    • 将FFLAGS = -O2 -frecursive修改为FFLAGS = -O2 -recursive -fPIC,其中-recursive是ifort适配Fortran递归子程序的参数,-fPIC用于生成位置无关代码,方便后续链接到动态库或者其他程序
    • 确认BLASLIB = ../../librefblas.a行未被注释,强制编译自带参考BLAS,避免混编问题
  • 执行编译
    在源码根目录直接执行:
    make -j$(nproc)
    
    编译完成后,源码根目录下会生成liblapack.a、librefblas.a、libtmglib.a三个静态库文件,直接拷贝到自己的库目录即可使用。如果需要动态库,可以基于编译好的目标文件用ifort自行链接生成。

常见问题排查

  1. 执行编译命令提示找不到ifort:不要加sudo执行编译,sudo会重置普通用户的环境变量,重新在普通用户权限下加载oneAPI环境变量即可
  2. 链接阶段出现gfortran相关的未定义符号:是混编了系统自带的gfortran版本BLAS/LAPACK,清空build目录(CMake方案)或者清理make缓存(Make方案,执行make clean),重新配置强制使用自带参考BLAS即可
  3. 编译阶段报Fortran语法错误:如果使用的是2020年之前的老版本Intel Parallel Studio自带的ifort,对3.10+版本的LAPACK语法兼容性较差,升级到oneAPI版本的ifort即可解决

内容的提问来源于stack exchange,提问作者DavidS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:24:19