1

我正在尝试使用 CBLAS ATLAS。我是初学者。我有以下 C 代码。

// tmp.cpp file
#include<stdio.h>
#include<stdlib.h>
#include<cblas.h>

int main(void){
   float x[2] = {6,2};
   float *y = (float *)malloc(2*sizeof(float));
   const int n = 2;
   const int incx = 1;
   const int incy = 1;
   float a = 5.4;
   y[0] = 4.2; y[1] = 4.5;
   cblas_saxpy(n,a,x,incx,y,incy);
   free(y);
}

我在视频http://youtu.be/DvLSr6zN0pU?t=6m5s和下一个视频“part3”之后安装了 ATLAS 库。但是,我没有 FORTRAN 编译器,所以我配置

$../ATLAS/configure --nof77

安装过程如视频中所述进行。

iMac:Desktop sotero$ ls /usr/local/atlas/include
atlas       cblas.h     clapack.h
iMac:Desktop sotero$ ls /usr/local/atlas/lib/
libatlas.a  libcblas.a  liblapack.a libptcblas.a

我尝试用这个结果编译

iMac:Desktop sotero$ c++ tmp.cpp
tmp.cpp:3:18: error: cblas.h: No such file or directory
tmp.cpp: In function ‘int main()’:
tmp.cpp:14: error: ‘cblas_saxpy’ was not declared in this scope

我阅读了如何链接到网站http://math-atlas.sourceforge.net/errata.html#LINK并且我有以下要编译的内容

iMac:Desktop sotero$ c++ tmp.cpp -L/usr/local/atlas/lib/ -lcblas -latlas -I/usr/local/atlas/include/
Undefined symbols:
  "cblas_saxpy(int, float, float const*, int, float*, int)", referenced from:
     _main in ccPop12J.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

我不知道我应该如何编译。我只需要升级一个 BLAS。如果您确实链接到 ATLAS 库,我一直在寻找编译,但我迷路了。

我该如何解决?

4

0 回答 0