Linux 下载&使用 CLAPACK

231 阅读2分钟

本文已参与【新人创作礼】活动,一起开启掘金创作之路。

前言

本文需要感谢@yx的大力指导。

1. 下载 & 解压

使用wget命令进行下载(也可以用浏览器)

wget www.netlib.org/clapack/clapack.tgz

在这里插入图片描述 下载完会多出一个clapack.tgz压缩包文件(名字一般是红色的)

然后解压文件(注:版本可能不同)

tar xvf clapack.tgz

2. make

进入解压后的文件夹

cd CLAPACK-3.2.1

首先改个名,来使用官方提供的example文件

mv make.inc.example make.inc

然后开始make,来得到我们需要的四个lib文件(过程中可以使用-j命令多线程加速)

make f2clib  # get `./F2CLIBS/libf2c.a`
make blaslib  # get `./blas_LINUX.a`
make  # get `./tmglib_LINUX.a` and `./lapack_LINUX.a`

等待完成后,没有出错即可进入下一步(关于testing的报错可以忽略)

(注:除了得到了需要的lib文件外,lapack,blas等的源代码可以在BLAS/SRCSRC/F2CLIBS/SRC目录下找到)

3. 收尾工作

接下来修改一下文件权限

chmod 644 INCLUDE/*.h

并且把头文件考入系统目录

sudo cp INCLUDE/*.h /usr/include

最后把之前make得到的四个lib文件(libf2c.ablas_LINUX.atmglib_LINUX.alapack_LINUX.a)放在喜欢的目录下即可(比如我放在了~/Documents下新建的一个lapack-libs文件夹里)。

4. 使用

上面的步骤做完后就可以写程序使用了

在使用时需要按顺序导入这些包

#include <blaswrap.h>
#include <f2c.h>
#include <clapack.h>

编译链接库的时候,如果觉得需要挨个链接文件太麻烦的话,可以先把库文件融合到一个文件里。方法如下:

  1. 新建一个空文件夹并进入,比如mkdir tmp && cd tmp
  2. 将四个lib文件中的内容(也就是一堆.o文件)抽取到当前新建的这个空文件夹下
    # 命令中的括号需要改为文件对应的路径
    ar -r <lapack_LINUX.a的存放路径>  # 如:ar -r ~/Documents/lapack-libs/lapack_LINUX.a
    ar -r <libf2c.a的存放路径>
    ar -r <tmglib_LINUX.a的存放路径>
    ar -r <blas_LINUX.a的存放路径>
    
  3. 最后,将抽取出的内容融合为一个文件(比如叫做libclapack.a,存放到~/Documents文件夹里)
    ar <融合后新建的文件的路径> *.o  # 如:ar ~/Documents/libclapack.a *.o
    

这样,以后编译时只需要链接libclapack.a这一个文件就够了,具体方法是:

gcc -o <输出文件名> <待编译文件名> <libclapack.a文件路径> -lm # 如:gcc -o test test.c ~/Documents/libclapack.a -lm

(注:有的情况下可以省略-lm

参考资料

www.netlib.org/clapack/

技术|2 种从Linux 终端下载文件的方法