Linux 下载&使用 CLAPACK (CBLAS)

前言

本文需要感谢@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 -x <lapack_LINUX.a的存放路径>  # 如:ar -x ~/Documents/lapack-libs/lapack_LINUX.a
    ar -x <libf2c.a的存放路径>
    ar -x <tmglib_LINUX.a的存放路径>
    ar -x <blas_LINUX.a的存放路径>
    
  3. 最后,将抽取出的内容融合为一个文件(比如叫做libclapack.a,存放到~/Documents文件夹里)
    ar -r <融合后新建的文件的路径> *.o  # 如:ar -r ~/Documents/libclapack.a *.o
    

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

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

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

可以使用如下代码进行编译测试

#include<blaswrap.h>
#include<f2c.h>
#include<clapack.h>
#include<complex.h>
#include<math.h>
#include<malloc.h>
#include<stdio.h>
int main(int argc, char** argv)
{
	integer N, INCX, INCY;
	double *DX, *DY;
	N = 3;
	INCX = 1, INCY = 1;
	DX = (double*)malloc(N * sizeof(double));
	DY = (double*)malloc(N * sizeof(double));
	DX[0] = 1.0;
	DX[1] = 2.0;
	DX[2] = 3.0;
	dcopy_(&N, DX, &INCX, DY, &INCY);
	for(int i = 0; i < N; i++)
	{
		printf("%lf\n", DY[i]);
	}
	return 0;
}

参考资料

http://www.netlib.org/clapack/

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值