缺少头文件时链接到BLAS

时间:2014-01-29 18:26:35

标签: c gcc blas

我正在尝试在C中编译一个使用BLAS接口进行线性代数的程序。系统在/usr/lib64/libblas.*.a.so个文件中包含BLAS库,但cblas.h中没有/usr/include。我尝试在本地复制标题并编译以下简单程序:

#include <stdio.h>
#include <cblas.h>
int main() {
    double foo[] = {1.1,1.2,1.3};
    printf("Vector norm: %g\n",cblas_dnrm2 ( 3, foo, 1 ));
}

带有选项

gcc blas_test.c -L/usr/lib64 -lblas -I.

但得到错误undefined reference to 'cblas_dnrm2'

如何正确链接提供的库?


更新:如果我尝试链接到libcblas.so.3中的libcblas.so.3.0/usr/lib64/atlas,请执行以下操作:

gcc blas_test.c -L/usr/lib64/atlas -lcblas -I.

我收到错误/usr/bin/ld: cannot find -lcblas。再次,它找到头文件就好了,但找不到共享库对象。

1 个答案:

答案 0 :(得分:1)

gcc似乎会查找.a.so个文件,但不会查找.so.3个文件。解决了以下问题:

gcc blas_test.c -L /usr/lib64/atlas -l :libcblas.so.3 -I.