【发布时间】:2012-03-25 17:17:38
【问题描述】:
当我用犰狳 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 的一部分,但我可能错了。非常感谢您的 cmets。
问题解决方法:
Dirk 的建议几乎奏效了。正如我在对他的帖子的回复中提到的那样,问题是 cmake 犹豫不决。我误诊为 cmake 找不到 clapack 的问题。事实上,在更仔细地查看了 cmake 输出后,我意识到当它决定将其用作编译器 /usr/bin/c++ 时,它存在找不到好的编译器或者拖拖拉拉的问题。所以我做了 CXX=g++ 然后再次 cmake 效果很好。在那之后,犰狳编译得很好。
【问题讨论】: