Я пытаюсь установить 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
не был установлен. Чего мне не хватает?
Эти 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
Pls. смотрят, если у Вас есть папка под названием "Собственный" в/usr/include.
я не знаю собственный и процедура установки. Но очень часто dev включает, названы с версией.
, Если у Вас есть папка "Eigen3" в Вашем/usr/include каталоге, необходимо изменить код на:
#include <Eigen3/Dense>
Измените включение в
#include <eigen3/Eigen/Dense>