【问题标题】:I get "lapack.h: No such file or directory" although I installed liblapack-dev尽管我安装了 liblapack-dev,但我得到“lapack.h:没有这样的文件或目录”
【发布时间】:2015-10-20 03:13:31
【问题描述】:

我使用 Synaptic 安装了 liblapack-dev 及其依赖项,并在我的代码中包含了 <lapack.h>

如果我尝试像这样编译我的程序...

mpicc program.c -llapack -o output

...我收到以下错误:

program.c:4:20: fatal error: lapack.h: No such file or directory 
compilation terminated.

我该如何解决这个问题?我已经花了几个小时在谷歌上搜索解决方案,但没有任何帮助。

我正在使用 Linux Mint,但我在最新版本的 Ubuntu 上尝试了相同的操作,但仍然无法正常工作。当我尝试从我的程序中“消除”MPI 并使用 gcc 编译时,同样的事情。

【问题讨论】:

  • locate lapack.h 头,可能需要设置编译器的包含路径。
  • @Daniel Fischer:我如何准确定位 lapack.h 标头?如果我在终端中输入“locate lapack.h”,我什么也得不到。如果我输入“locate liblapack-dev”,我会得到一些结果。以及如何设置编译器的包含路径?我的意思是,我已经尝试过做类似的事情(或者至少我认为我做过),但没有成功。
  • 大多数编译器都有一个-i 或类似的命令行选项,允许指定包含路径。有关特定编译器的命令选项,请查阅帮助文档、适当的手册页或 google。
  • 如果locate lapack.h 没有找到它,你可能根本没有它,或者locate 使用的数据库在安装lapack 后没有更新。在后一种情况下,运行updatedb(可能需要sudo)将允许它是located。你也可以使用find(或者如果 Mint 有 GUI 界面)来搜索它。可能它会在/usr/include/user/lib/usr/lib64/usr/local 之一之下。重新包含路径,StarPilot 说的,但我不知道 mpicc。
  • @Daniel Fischer:我尝试更新数据库,现在只得到“/usr/include/atlas/clapack.h”。

标签: c lapack


【解决方案1】:

我在 Debian 上遇到了类似的问题。我注意到了

dpkg -L liblapack-dev

没有返回单个头文件。所以我用apt-cache 做了一些搜索,发现似乎是C 头文件。安装后通过

sudo apt-get install liblapacke-dev

(注意额外的 e!),我能够编译一个最小的工作示例,找到 here。修改顶部的include阅读

#include <lapacke.h>

和编译

gcc -llapack lapack_example.c

在我的系统上成功运行。希望这对某人有所帮助。

【讨论】:

  • 谢谢,这帮助我编译了opencv。
【解决方案2】:

因为不适合评论而回答:

manual says:

Standard C language APIs for LAPACK

collaboration LAPACK and INTEL Math Kernel Library Team

    LAPACK C INTERFACE is now included in the LAPACK package (in the lapacke directory)

    LAPACKE User Guide

    Updated: April 20, 2012

    header files: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_utils.h

所以也许你需要

#include <lapacke.h>

【讨论】:

  • 我会赞成这个,因为你想帮助我,但事实是:我实际上尝试过 first,它是我最终想要使用的 ( lapacke),但后来我意识到即使是 lapack(没有“e”)也不适用于我,并认为我应该先让它工作(因为 lapacke 是 lapack 的一部分)。
  • 啊,但关键是没有lapack.h,据我所知。也许user's guide 会散发出更多光芒。
  • 有 lapack.h 因为我见过使用它的程序在其他计算机上运行。我已经看过用户指南。诚然,我还没有阅读整本书,但我仍然没有找到解决我的问题的方法,其中似乎相关的部分。
  • 我已经搜索了来源,至少 LAPACK 包没有lapack.h。它提供的 C 接口是 LAPACKE,但您必须在调用的函数前加上 info = LAPACKE_dgels(LAPACK_ROW_MAJOR,'N',m,n,nrhs,*a,lda,*b,ldb); 等。在旧版本中可能有 lapack.h,或者它来自另一个使用它的包。我找不到任何关于使用 LAPACK 和 lapack.h 和谷歌的有用信息,抱歉。
  • 是的,对不起,我想你可能是对的,“lapack.h”甚至可能是 Fortran 专用的东西(我看到的可能是“mkl_lapack.h”?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 2019-11-23
  • 2018-09-15
  • 2022-01-26
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多