我要在extern "C"
块中声明LAPACK函数,然后在我的C ++代码中使用它们。根据我对BLAS / LAPACK如何工作的有限了解,与我的blas库建立链接应该足够了。但是,-lblas
还不够,我被迫做-llapack
。
为什么会这样?我正在使用openblas
,因此-lblas
应该足够了。我在这里想念什么?我想了解如何与BLAS / LAPACK进行链接。
最小工作示例:
#include <iostream>
extern "C" {
void dpptrf_(const char *, const int *, double *, int *);
}
int main() {
const char UPLO = 'L';
const int N = 3;
double AP[6] = {5,1,1,5,1,5};
int INFO = 0;
dpptrf_(&UPLO, &N, AP, &INFO);
for (auto elem : AP)
std::cout << elem << ", ";
return 0;
}
对dpptrf的引用:
编译命令:
g++ main.cpp -lblas // Does not work
g++ main.cpp -lblas -llapack // Works
其他信息:
> pacman -Q blas
openblas 0.3.5-1
> pacman -Q lapack
lapack 3.8.0-2
> pacman -Q gcc
gcc 8.2.1+20181127-1