ATLASを初めて使用しようとしています。私はそれを適切にリンクすることができません。ここでは非常に単純なSGEMMプログラムです:'cblas_sgemm'への定義されていない参照をリンクするATLAS gemm
g++ test.c -lblas -lcblas -latlas -llapack
/tmp/cc1Gu7sr.o: In function `main':
test.c:(.text+0x29e): undefined reference to `cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const*, int, float const*, int, float, float*, int)'
collect2: ld returned 1 exit status
あなたが見ることができるように、私は違う与え試してみました:私は、標準的なATLASのインストールとLinuxプラットフォーム上でそれをコンパイル
...
#include <cblas.h>
const int M=10;
const int N=8;
const int K=5;
int main()
{
float *A = new float[M*K];
float *B = new float[K*N];
float *C = new float[M*N];
// Initialize A and B
cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, 1.0, A, K, B, N, 0.0, C, N);
...
}
は、それがリンクエラーを与えますライブラリの組み合わせは助けにはなりませんでした。私は間違って何をしていますか?
ですが、私は 'は'すでにこのガードを持っていないことを驚いています。 –
ありがとうございます。私は今、図書館でこのガードをするのはかなり一般的だとは考えていませんでした。とにかく、ちょうどextern "C"をやってそれを動作させました。 – usman