Я пытаюсь скомпилировать программу на C, которая использует интерфейс BLAS для линейной алгебры. В системе есть библиотеки BLAS в /usr/lib64/libblas.*
(файлы .a
и .so
), но нет 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
. Опять же, он отлично находит заголовочный файл, но не находит объект общей библиотеки.
<cblas.h>
на"cblas.h"
и поместите его в ту же папку, что и blas_test.c<>
для системного пути, тогда вам не нужен-I.
- person Fredrik Pihl   schedule 29.01.2014cblas.h
в порядке, проблема в том, что он не связывается с библиотеками, которые там есть. Я ссылаюсь на правильную библиотеку? Должен ли я ссылаться наlibcblas.so
вместоlibblas.so
? - person David P   schedule 29.01.2014