5

私はcblas ddotをテストしていました。使用したコードはリンクからのもので、次のように修正しました

#include <stdio.h>
#include <stdlib.h>
#include <cblas.h>

int main()
{
    double  m[10],n[10];
    int i;
    int result;

    printf("Enter the elements into first vector.\n");
    for(i=0;i<10;i++)
        scanf("%lf",&m[i]);

    printf("Enter the elements into second vector.\n");
    for(i=0;i<10;i++)
        scanf("%lf",&n[i]);

    result = cblas_ddot(10, m, 1, n, 1);
    printf("The result is %d\n",result);

    return 0;
}

その後、コンパイルしたところ、次のようになりました。

/tmp/ccJIpqKH.o: In function `main':
test.c:(.text+0xbc): undefined reference to `cblas_ddot'
collect2: ld returned 1 exit status

の cblas ファイルを確認したところ/usr/include/cblas.h

double cblas_ddot(const int N, const double *X, const int incX,
              const double *Y, const int incY);

どこが間違っているのかわかりません。「cblas_ddot」が未定義の参照であるとコンパイラが言ったのはなぜですか?

4

2 に答える 2

5

ヘッダーだけを含めることはできません。ヘッダーは、関数がどこかに存在することをコンパイラに伝えるだけです。cblas ライブラリに対してリンクするようにリンカーに指示する必要があります。

ファイルがあると仮定すると、libcblas.aGCC にそれについて伝えることができます-lcblas

GNU Scientific Library の Web サイトには、これを行う方法が説明されています。

于 2013-10-22T02:07:27.220 に答える