C++ 犰狳:找不到克拉帕克
我正在安装犰狳 但是,make命令抱怨“clapack.h”,该确实存在于位置/usr/include/atlas/clapack.h。我们将非常感谢您的帮助 注意,如果我将该文件复制到/usr/include/,然后进行以下操作,我可以运行它: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
$ 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
中,添加额外的路径,否则它将无法在装备中找到它们