C++ 犰狳:找不到克拉帕克

C++ 犰狳:找不到克拉帕克,c++,armadillo,C++,Armadillo,我正在安装犰狳 但是,make命令抱怨“clapack.h”,该确实存在于位置/usr/include/atlas/clapack.h。我们将非常感谢您的帮助 注意,如果我将该文件复制到/usr/include/,然后进行以下操作,我可以运行它: $ sudo cp /usr/include/atlas/clapack.h /usr/include/ $ make 但是,我不习惯在多个位置复制同一个文件会很危险吗? 这就是我目前所做的: 1) 我下载了犰狳图书馆的资料。之后,我在CMakeLi

我正在安装犰狳

但是,make命令抱怨“clapack.h”,该确实存在于位置/usr/include/atlas/clapack.h。我们将非常感谢您的帮助

注意,如果我将该文件复制到/usr/include/,然后进行以下操作,我可以运行它:

$ sudo cp /usr/include/atlas/clapack.h /usr/include/
$ make
但是,我不习惯在多个位置复制同一个文件会很危险吗?

这就是我目前所做的:

1) 我下载了犰狳图书馆的资料。之后,我在CMakeLists.txt中更改了以下行(我有Lapack、Blas和Atlas):

然后“
$cmake.
”成功运行并找到
Lapack、Blas和Atlas
。 但是,当我运行“
make
”时,它会给出以下错误(代码include_atlas.hpp中标记的第26行):

当我查看
include_atlas.hpp
时,似乎
ARMA_USE_atlas
仍然设置为false:

// Copyright (C) 2008-2011 Conrad Sanderson
// Copyright (C) 2008-2011 NICTA (www.nicta.com.au)
// 
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.


#if defined(ARMA_USE_ATLAS)
  #if !defined(ARMA_ATLAS_INCLUDE_DIR)
    extern "C"
      {
      #include <cblas.h>
      #include <clapack.h>
      }
  #else
    #define ARMA_STR1(x) x
    #define ARMA_STR2(x) ARMA_STR1(x)

    #define ARMA_CBLAS   ARMA_STR2(ARMA_ATLAS_INCLUDE_DIR)ARMA_STR2(cblas.h)
    #define ARMA_CLAPACK ARMA_STR2(ARMA_ATLAS_INCLUDE_DIR)ARMA_STR2(clapack.h)

    extern "C"
      {
      #include ARMA_INCFILE_WRAP(ARMA_CBLAS)
      #include ARMA_INCFILE_WRAP(ARMA_CLAPACK)      // This is line no 26
      }

    #undef ARMA_STR1
    #undef ARMA_STR2
    #undef ARMA_CBLAS
    #undef ARMA_CLAPACK
  #endif
#endif

cmake之后运行
make
时,我遇到了同样的问题。
当我检查
cmake
输出时,它指向了错误的atlas目录,即它指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/
它应该指向的地方
atlas\u INCLUDE\u DIR=/usr/INCLUDE/atlas

-- Found ATLAS: /usr/lib/libatlas.so
-- Found BLAS: /usr/lib/libblas.so
-- Found LAPACK: /usr/lib/liblapack.so
--      MKL_FOUND = NO
--   ACMLMP_FOUND = NO
--     ACML_FOUND = NO
-- OpenBLAS_FOUND = NO
--    ATLAS_FOUND = YES
--     BLAS_FOUND = YES
--   LAPACK_FOUND = YES
-- ATLAS_INCLUDE_DIR = /usr/include/
-- ARPACK_FOUND = NO
-- 
-- *** Armadillo wrapper library will use the following libraries:
-- *** ARMA_LIBS = /usr/lib/libatlas.so;/usr/lib/libblas.so;/usr/lib/liblapack.so
我通过在
cmakcache.txt
文件中添加正确的路径来纠正这个问题。然后它
make
makeinstall
正常运行

但我在使用编译示例后运行时出现了此错误

g++   -O2   -o example1  example1.cpp  -larmadillo
错误是

./example1: error while loading shared libraries: libarmadillo.so.4: cannot open shared object file: No such file or directory

注意:上述错误可以通过在
/usr/lib
目录中创建
libarmadillo.so
libarmadillo.so.4
的符号链接来解决。

cmake之后运行
make
时,我遇到了相同的问题。
当我检查
cmake
输出时,它指向错误atlas目录,即它指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/
,它应该指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/atlas

-- Found ATLAS: /usr/lib/libatlas.so
-- Found BLAS: /usr/lib/libblas.so
-- Found LAPACK: /usr/lib/liblapack.so
--      MKL_FOUND = NO
--   ACMLMP_FOUND = NO
--     ACML_FOUND = NO
-- OpenBLAS_FOUND = NO
--    ATLAS_FOUND = YES
--     BLAS_FOUND = YES
--   LAPACK_FOUND = YES
-- ATLAS_INCLUDE_DIR = /usr/include/
-- ARPACK_FOUND = NO
-- 
-- *** Armadillo wrapper library will use the following libraries:
-- *** ARMA_LIBS = /usr/lib/libatlas.so;/usr/lib/libblas.so;/usr/lib/liblapack.so
我通过在
cmakcache.txt
文件中添加正确的路径来纠正这个问题。然后它
make
makeinstall
正常运行

但我在使用编译示例后运行时出现了此错误

g++   -O2   -o example1  example1.cpp  -larmadillo
错误是

./example1: error while loading shared libraries: libarmadillo.so.4: cannot open shared object file: No such file or directory

注意:上述错误可以通过在
/usr/lib
目录中创建
libarmadillo.so
libarmadillo.so.4
的符号链接来解决。

cmake之后运行
make
时,我遇到了相同的问题。
当我检查
cmake
输出时,它指向错误atlas目录,即它指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/
,它应该指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/atlas

-- Found ATLAS: /usr/lib/libatlas.so
-- Found BLAS: /usr/lib/libblas.so
-- Found LAPACK: /usr/lib/liblapack.so
--      MKL_FOUND = NO
--   ACMLMP_FOUND = NO
--     ACML_FOUND = NO
-- OpenBLAS_FOUND = NO
--    ATLAS_FOUND = YES
--     BLAS_FOUND = YES
--   LAPACK_FOUND = YES
-- ATLAS_INCLUDE_DIR = /usr/include/
-- ARPACK_FOUND = NO
-- 
-- *** Armadillo wrapper library will use the following libraries:
-- *** ARMA_LIBS = /usr/lib/libatlas.so;/usr/lib/libblas.so;/usr/lib/liblapack.so
我通过在
cmakcache.txt
文件中添加正确的路径来纠正这个问题。然后它
make
makeinstall
正常运行

但我在使用编译示例后运行时出现了此错误

g++   -O2   -o example1  example1.cpp  -larmadillo
错误是

./example1: error while loading shared libraries: libarmadillo.so.4: cannot open shared object file: No such file or directory

注意:上述错误可以通过在
/usr/lib
目录中创建
libarmadillo.so
libarmadillo.so.4
的符号链接来解决。

cmake之后运行
make
时,我遇到了相同的问题。
当我检查
cmake
输出时,它指向错误atlas目录,即它指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/
,它应该指向的是
atlas\u INCLUDE\u DIR=/usr/INCLUDE/atlas

-- Found ATLAS: /usr/lib/libatlas.so
-- Found BLAS: /usr/lib/libblas.so
-- Found LAPACK: /usr/lib/liblapack.so
--      MKL_FOUND = NO
--   ACMLMP_FOUND = NO
--     ACML_FOUND = NO
-- OpenBLAS_FOUND = NO
--    ATLAS_FOUND = YES
--     BLAS_FOUND = YES
--   LAPACK_FOUND = YES
-- ATLAS_INCLUDE_DIR = /usr/include/
-- ARPACK_FOUND = NO
-- 
-- *** Armadillo wrapper library will use the following libraries:
-- *** ARMA_LIBS = /usr/lib/libatlas.so;/usr/lib/libblas.so;/usr/lib/liblapack.so
我通过在
cmakcache.txt
文件中添加正确的路径来纠正这个问题。然后它
make
makeinstall
正常运行

但我在使用编译示例后运行时出现了此错误

g++   -O2   -o example1  example1.cpp  -larmadillo
错误是

./example1: error while loading shared libraries: libarmadillo.so.4: cannot open shared object file: No such file or directory


注意:上述错误可以通过在
/usr/lib
目录中创建
libarmadillo.so
libarmadillo.so.4
的符号链接来解决。

不要修改
CMakeLists.txt
。取而代之的是,使用犰狳附带的原始版本,让cmake检测Atlas是否存在。@mtall我这样做了。我仍然得到同样的错误。你可以使用犰狳而不安装它。请参见第(2)点所示的命令行,在不使用atlas的情况下先试用(即仅blas和lapack)。一旦工作正常,将
-DARMA\u USE\u ATLAS-I path\u添加到命令行的\u ATLAS\u include\u dir-latlas
。将
path\u更改为\u atlas\u include\u dir
到包含
cblas.h
clapack.h
标题的目录顺便说一句,它可能比使用atlas更容易使用。这是BLAS的一个优化版本。我一般认为犰狳的CMake配置在检测库时最多只能是零星的。我经常不得不深入到
cmake_aux
并添加其他路径,否则它将无法在正确的位置找到它们。不要修改
CMakeLists.txt
。取而代之的是,使用犰狳附带的原始版本,让cmake检测Atlas是否存在。@mtall我这样做了。我仍然得到同样的错误。你可以使用犰狳而不安装它。请参见第(2)点所示的命令行,在不使用atlas的情况下先试用(即仅blas和lapack)。一旦工作正常,将
-DARMA\u USE\u ATLAS-I path\u添加到命令行的\u ATLAS\u include\u dir-latlas
。将
path\u更改为\u atlas\u include\u dir
到包含
cblas.h
clapack.h
标题的目录顺便说一句,它可能比使用atlas更容易使用。这是BLAS的一个优化版本。我一般认为犰狳的CMake配置在检测库时最多只能是零星的。我经常不得不深入到
cmake_aux
中,添加额外的路径,否则它将无法在装备中找到它们