如何正确链接到openblas

时间:2019-04-19 12:44:54

标签: c++ linker lapack blas openblas

我要在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的引用:

netlib.org/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

0 个答案:

没有答案