고유 설치가 작동하는 것 같지만 여전히 고유 작업을 수행 할 수 없습니다.


9

eigen 을 설치하려고 하는데 작동하지 않는 것 같습니다.

나는했다 :

sudo apt-get install libeigen3-dev

그리고 모든 후, 괜찮아 보인다

dpkg -p libeigen3-dev

나는 얻다:

Package: libeigen3-dev
Priority: extra
Section: libdevel
Installed-Size: 3718
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Source: eigen3
Version: 3.2.0-4
Depends: pkg-config
Suggests: libeigen3-doc
Size: 698062
Description: lightweight C++ template library for linear algebra
 Eigen 3 is a lightweight C++ template library for vector and matrix math,
 a.k.a. linear algebra.
 .
 Unlike most other linear algebra libraries, Eigen 3 focuses on the simple
 mathematical needs of applications: games and other OpenGL apps, spreadsheets
 and other office apps, etc. Eigen 3 is dedicated to providing optimal speed
 with GCC. A lot of improvements since 2-nd version of Eigen.
Original-Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Homepage: http://eigen.tuxfamily.org

모든 것이 나에게 잘 보였다. 그러나 기본 코드를 컴파일하려고하면 (자습서에서 제공) :

first_eigen.cpp

#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
int main()
{
  Matrix2d a;
  a << 1, 2,
  3, 4;
  MatrixXd b(2,2);
  b << 2, 3,
  1, 4;
  std::cout << "a + b =\n" << a + b << std::endl;
  std::cout << "a - b =\n" << a - b << std::endl;
  std::cout << "Doing a += b;" << std::endl;
  a += b;
  std::cout << "Now a =\n" << a << std::endl;
  Vector3d v(1,2,3);
  Vector3d w(1,0,0);
  std::cout << "-v + w - v =\n" << -v + w - v << std::endl;
}

다음과 같이 쉘에서 실행합니다.

g++ -std=c++11 first_eigen.cpp -o my_exec

다음과 같은 오류가 발생합니다.

first_eigen.cpp:2:23: fatal error: Eigen/Dense: No such file or directory
 #include <Eigen/Dense>
                       ^
compilation terminated.

eigen설치되지 않은 것 같습니다 . 내가 무엇을 놓치고 있습니까?

답변:


10

eigen3헤더 파일은 하위 디렉토리에 가서 /usr/include/eigen3예를 들어,

/usr/include/eigen3/Eigen/Array
/usr/include/eigen3/Eigen/Cholesky
/usr/include/eigen3/Eigen/CholmodSupport
/usr/include/eigen3/Eigen/Core
/usr/include/eigen3/Eigen/Dense
/usr/include/eigen3/Eigen/Eigen

예를 들어 컴파일러 명령 줄에 추가 포함 경로를 지정해야합니다.

g++ -std=c++11 -I/usr/include/eigen3 first_eigen.cpp -o my_exec

대안 적으로 (그리고 아마도 더 이식 가능하게) pkg-config데이터베이스를 사용 하여 포함을 자동화 할 수 있습니다.

g++ -std=c++11 `pkg-config --cflags eigen3` first_eigen.cpp -o my_exec

4
또한 / usr / local / include 안에 / usr / include / eigen3 / Eigen에 링크하여 g ++와 함께 추가 플래그를 다시 사용할 필요가 없습니다. 이를 위해 다음을 실행하십시오.sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
Akronix


0

Pls. / usr / include에 "Eigen"이라는 폴더가 있는지 확인하십시오.

나는 고유과 설치 루틴을 모른다. 그러나 종종 개발자 포함에는 버전이 지정됩니다.

/ usr / include 디렉토리에 "Eigen3"폴더가있는 경우 코드를 다음과 같이 변경해야합니다.

#include <Eigen3/Dense>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.