Cài đặt Eigen dường như hoạt động, nhưng tôi vẫn không thể làm cho eigen hoạt động


9

Tôi đang cố gắng cài đặt eigen , nhưng dường như tôi không làm cho nó hoạt động.

Tôi đã làm:

sudo apt-get install libeigen3-dev

và mọi thứ có vẻ ổn, sau

dpkg -p libeigen3-dev

Tôi có:

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

Mọi thứ đều ổn với tôi. Tuy nhiên, khi tôi cố gắng biên dịch mã cơ bản (được đưa ra trong hướng dẫn):

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;
}

Tôi chạy nó trong cái vỏ như thế này:

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

Tôi nhận được lỗi sau đây:

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

Vì vậy, có vẻ như eigenkhông được cài đặt. Tôi đang thiếu gì?

Câu trả lời:


10

Các eigen3tệp tiêu đề đi trong thư mục con, /usr/include/eigen3vd

/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

vì vậy, bạn sẽ cần chỉ định đường dẫn bao gồm bổ sung trên dòng lệnh trình biên dịch của mình, ví dụ

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

Ngoài ra (và có thể là hợp lý hơn), bạn có thể sử dụng pkg-configcơ sở dữ liệu để tự động hóa việc đưa vào, tức là

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

4
Bạn cũng có thể tạo một liên kết bên trong / usr / local / include to / usr / include / eigen3 / Eigen để bạn không phải sử dụng bất kỳ cờ bổ sung nào với g ++ nữa. Để làm điều đó, chỉ cần thực hiện như sau:sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
Akronix


0

Xin vui lòng. hãy xem nếu bạn có một thư mục có tên "Eigen" trong / usr / include.

Tôi không biết eigen và thói quen cài đặt. Nhưng rất thường xuyên các dev bao gồm được đặt tên với một phiên bản.

Nếu bạn có thư mục "Eigen3" trong thư mục / usr / include của mình, bạn nên thay đổi mã của mình thành:

#include <Eigen3/Dense>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.