【问题标题】:Why doesn't such a file or directory, <cblas.h>, exist?为什么不存在这样的文件或目录 <cblas.h>?
【发布时间】:2011-12-14 00:46:33
【问题描述】:

我在 C 中做一些矩阵乘法,我正在尝试编译我的程序,但是它无法编译,原因是:

没有这样的文件或目录 cblas.h

这是我用来编译的命令:

gcc -o BLAS BLAS.c

有人可以帮帮我吗?我正在服务器上编译这个程序。我不确定这是否会有所作为。

【问题讨论】:

    标签: c matrix-multiplication


    【解决方案1】:

    您需要添加一个-I directory 选项,其中directory 是您系统上cblas.h 文件所在的位置。

    这给出了:

    gcc -o BLAS -I directory_of_cblas_header BLAS.c
    

    【讨论】:

    • 所以我不确定我的标头在我的系统上的位置。从服务器是 "~/usr/lib/libblas" 吗?感谢您的快速回复。
    • 运行find / -name cblas.h,它应该指出文件cblas.h在你的系统上的位置。
    【解决方案2】:

    您必须为您正在使用的库的头文件添加路径。试试-I 选项:

    gcc -o -I "path/to/you/headers" BLAS BLAS.c
    

    【讨论】:

    • 我不确定标头存储在哪里,或者我什至不确定。我已经尝试过像这样编译 gcc -o -I /usr/lib/libblas/ BLAS BLAS.c 感谢到目前为止的回答。
    【解决方案3】:

    我正在使用 RedHat7。

    sudo yum install openblas-devel安装openblas后

    我发现头文件(cblas.h、f77blas.h、lapacke_config.h、lapacke.h、lapacke_mangling.h、lapacke_utils.h、openblas_config.h)在/usr/include/openblas/

    通过在/usr/include/中创建指向这些文件的软链接,问题就解决了。

    【讨论】:

    • 这是一个非常错误的“解决方案”。子目录是设计使然。库应该将它们的标题放在/usr/include 的单独子目录中。所以你要么#include &lt;openblas/whatever.h&gt; 要么给你的预处理器一个-I 标志或等价物告诉它也在/usr/include/openblas 中搜索。您不会在 include 的根目录中开始符号链接。
    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2018-06-18
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多