Link OpenBLAS 到 MinGW
Link OpenBLAS to MinGW
我正在尝试 link OpenBLAS library with MinGW w64 编译器 Windows。
这是我的代码:
#include <cstdio>
#include <cblas.h>
#include <cstdlib>
int main(){
double m[10],n[10];
int i, result;
for(i=0;i<10;i++)
m[i] = 1.0l*rand()/RAND_MAX;
for(i=0;i<10;i++)
n[i] = 1.0l*rand()/RAND_MAX;
result = cblas_ddot(10, m, 1, n, 1);
return 0;
}
并使用此命令进行编译:
g++ ^ -IC:\OpenBLAS-0.3.6-x64\include -LC:\OpenBLAS-0.3.6-x64\lib -lopenblas blas.cpp
并得到一个错误
undefined reference to `cblas_ddot'
我从 here 下载了预编译的二进制文件并使用 64 位 Windows、g++ (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
我该如何解决这个错误?
一般建议始终将源文件和目标文件放在链接库之前。
一般来说,并不是所有的库函数都会用到,而只是主要代码源需要的那些。然后链接器需要在查看库之前知道未定义的符号。
然后将 blas.cpp
放在 -lopenblas
之前应该可以。
g++ ^ -IC:\OpenBLAS-0.3.6-x64\include -LC:\OpenBLAS-0.3.6-x64\lib blas.cpp -lopenblas
我正在尝试 link OpenBLAS library with MinGW w64 编译器 Windows。
这是我的代码:
#include <cstdio>
#include <cblas.h>
#include <cstdlib>
int main(){
double m[10],n[10];
int i, result;
for(i=0;i<10;i++)
m[i] = 1.0l*rand()/RAND_MAX;
for(i=0;i<10;i++)
n[i] = 1.0l*rand()/RAND_MAX;
result = cblas_ddot(10, m, 1, n, 1);
return 0;
}
并使用此命令进行编译:
g++ ^ -IC:\OpenBLAS-0.3.6-x64\include -LC:\OpenBLAS-0.3.6-x64\lib -lopenblas blas.cpp
并得到一个错误
undefined reference to `cblas_ddot'
我从 here 下载了预编译的二进制文件并使用 64 位 Windows、g++ (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
我该如何解决这个错误?
一般建议始终将源文件和目标文件放在链接库之前。
一般来说,并不是所有的库函数都会用到,而只是主要代码源需要的那些。然后链接器需要在查看库之前知道未定义的符号。
然后将 blas.cpp
放在 -lopenblas
之前应该可以。
g++ ^ -IC:\OpenBLAS-0.3.6-x64\include -LC:\OpenBLAS-0.3.6-x64\lib blas.cpp -lopenblas