1

当我用犰狳 makefile 编译 example2.cpp 并运行它时,我收到一条错误消息

error: det(): use of ATLAS or LAPACK needs to be enabled

我该如何解决?当我尝试使用解决方案时,我遇到了类似的错误。我的设置的详细信息是:

  • Ubuntu Lucid Lynx 10.04
  • 犰狳版本:2.4.2(Loco Lounge Lizard)
  • 阿特拉斯 3.9.51
  • 提升 1.48.0
  • g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3

Atlas 是在犰狳之前安装的,犰狳安装是用 Cmake 配置的。我远非 cmake 专家,但我认为当我用它生成 makefile 时它应该找到 ATLAS。犰狳文档似乎说,如果我使用 cmake 安装,我不需要手动启用 ATLAS。我试图通过插入手动破解 example2.cpp

#define ARMA_USE_ATLAS

在标题之前,但它只会产生一堆关于 Cblas 上缺少的东西的错误。也许缺少允许 cmake 找到 ATLAS 的步骤。感觉我错过了一些简单但关键的东西。任何帮助将不胜感激。

附加细节:

编辑:无论出于何种原因,我无法再添加评论,所以我在下面发布了对@Appleman1234 答案的回复。

我从源代码编译了犰狳和 ATLAS。我认为 ATLAS 已捆绑并优化了 LAPACK 和 BLAS。当我编译它时,我将一个位置传递给 lapack tar

./configure --shared --with-netlib-lapack-tarfile=/<path>/lapack-3.3.1.tgz

我还在 atlas lib 目录中看到以下文件:

libatlas.a, libcblas.a, libf77blas.a, liblapack.a, libptcblas.a, libptf77blas.a libsatlas.so, libtatlas.so

这似乎表明系统上安装了 blas、cblas 和 lapack。但是,犰狳中的CMakeCache.txt似乎表明cmake没有找到BLAS、CBLAS、CLAPACK如下

BLAS_LIBRARY:FILEPATH=BLAS_LIBRARY-NOTFOUND

CMakeCache.txt 中没有 ATLAS 的概念,所以我认为它也没有找到。也许我错了,但似乎我需要以某种方式将 cmake 指向 ATLAS,我只是不知道如何。假设 ATLAS 有 BLAS、LAPACK 和 CBLAS,我也可能会出错。我以为我将它们编译为 ATLAS 的一部分,但我可能错了。将不胜感激您的意见。

问题的解决方案:

德克的建议几乎奏效了。正如我在对他的帖子的回复中提到的那样,问题是 cmake 犹豫不决。我误诊为cmake找不到clapack的问题。事实上,在更仔细地查看了 cmake 输出之后,我意识到当它决定将其用作编译器 /usr/bin/c++ 时,它存在找不到好的编译器或者更确切地说是拖拖拉拉的问题。所以我做了 CXX=g++ 然后再次 cmake 效果很好。在那之后,犰狳编译得很好。

4

2 回答 2

3

您是否从源代码安装了犰狳?

cmake 在运行时输出了cmake .什么./configure

后者只是调用cmake ..

它是否输出了以下值?

-- CLAPACK_FOUND  = YES
-- CBLAS_FOUND    = YES

如果它们不是 YES,则根据 CMakeLists.txt,ARMA_USE_ATLAS将其设置为 false 并且不使用 ATLAS。

为了使用detor solve,如果您想使用 ATLAS 或只安装 LAPACK,请安装 CLAPACK 和 CBLAS。

于 2012-03-25T17:58:26.233 回答
1

由于 Debian / Ubuntu 中存在犰狳,您可以简单地安装所有已知的构建依赖项以确保您拥有-dev所需的所有软件包:

edd@max:~$ sudo apt-get build-dep armadillo
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
edd@max:~$ 

看来我的系统在这方面是完整的。

于 2012-03-25T18:38:29.453 回答