我正在尝试编译C中使用线性代数的BLAS接口的程序。该系统在/usr/lib64/libblas.*
(.a
和.so
文件)中具有BLAS库,但/usr/include
中没有cblas.h
。我尝试在本地复制标题并编译以下简单程序:
#include <stdio.h>
#include <cblas.h>
int main() {
double foo[] = {1.1,1.2,1.3};
printf("Vector norm: %gn",cblas_dnrm2 ( 3, foo, 1 ));
}
带有选项
gcc blas_test.c -L/usr/lib64 -lblas -I.
但获取错误undefined reference to 'cblas_dnrm2'
如何正确链接提供的库?
更新:如果我尝试链接到libcblas.so.3
或/usr/lib64/atlas
中的libcblas.so.3.0
,则喜欢:
gcc blas_test.c -L/usr/lib64/atlas -lcblas -I.
我得到错误/usr/bin/ld: cannot find -lcblas
。同样,它发现标题文件正好,但找不到共享库对象。
似乎GCC寻找.a
和.so
文件,而不是.so.3
文件。解决以下内容:
gcc blas_test.c -L /usr/lib64/atlas -l :libcblas.so.3 -I.