Linux系统下编译LAPACK过程自述

本文档记录了在Linux系统中使用ifort编译LAPACK库的过程,包括下载源码、修改配置文件、编译及测试代码。详细描述了如何从官网获取最新版本LAPACK,配置make.inc文件以使用ifort,以及解决编译过程中遇到的问题。最终成功编译出liblapack.a和librefblas.a库,并用一个简单的例子验证了编译效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天需要使用LAPACK库当中的几个函数,之前师兄编译好的LAPACK库在我的系统上怎么也没法通过编译,没办法,只能自己编译一遍啦!


下面的文章当中,加粗的是在命令行里面输入的,其他的修改可以用各种编辑器完成,我是用的vim


首先,找到LAPACK的官网,直接百度就行了。找到LAPACK的压缩包。


我现在最新的版本是lapack-3.7.0.tgz


将这个压缩包放在某个目录当中,解压缩。解压的命令是 tar -zxvf lapack-3.7.0.tgz


解压完成之后会出现一个名为lapack-3.7.0的文件夹。进入这个文件夹的目录下。 命令 vi lapack-3.7.0


下一步命令 cp make.inc.example make.inc


                     vi make.inc


将 make.inc当中第19行的 FORTRAN = gfortran 修改为 FORTRAN = ifort -g

                              第23行     LOADER = gfortran 修改为 LOADER = ifort -g

(这一步的目的是修改编译的编译器,我们组里都是使用ifort编译的,如果用gfortran编译其实应该也是可以的。)


因为我用的ifort,所以把第38行TIMER    = INT_ETIME 修改为    # TIMER    = INT_ETIME

(其实就是把这一行注释掉)

然后把第41行# TIMER    = INT_CPU_TIME 修改为 TIMER    = INT_CPU_TIME

(其实就是把注释取消。)


点击键盘的Esc键,然后输入 :wq 保存并退出


这时候就回到了bash。我们这时候再来修改另外一个文件

命令 vi Makefile


第11和第12行的内容为 

lib: lapacklib tmglib
# lib: blaslib variants lapacklib tmglib

修改成

#lib: lapacklib tmglib

lib: blaslib variants lapacklib tmglib

(其实就是把注释的位置换一下。)保存退出 


命令 make


等待编译成功之后,会出现新的文件和目录,其中有三个后缀为.a的文件。

liblapack.a    librefblas.a   libtmglib.a

将liblapack.a librefblas.a拷贝到需要编译的程序的目录下


然后编译的时候的命令就是 ifort main.f90 liblapck.a librefblas.a

贴出一段从网上down的代码,我测试的时候就是用这段代码编译的,然后就编译成功了,非常开心!



program main
    implicit none
    INTEGER :: N, LDA, LDB
    INTEGER :: NRHS
    INTEGER :: INFO
    INTEGER :: IPIV(4)
    REAL(8) :: A(4,4), B(4,1)


    N=4;LDA=4;LDB=4
    NRHS=1


    A=reshape((/1.80,2.88,2.05,-0.89,&
                5.25,-2.95,-0.95,-3.80,&
                1.58,-2.69,-2.90,-1.04,&
                -1.11,-0.66,-0.59,0.80/),(/4,4/))
    B=reshape((/9.52,24.35,0.77,-6.22/),(/4,1/))


    call DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )


    write(*,*) "Solution:"
    write(*,'(f8.3)') B
    write(*,*) "INFO=", INFO


    stop
end program

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值