Eigen स्थापना काम करने के लिए लग रहा था, लेकिन मैं अभी भी eigen काम नहीं कर सकता


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 / लोकल / / / usr / में शामिल / eigen3 / Eigen को भी लिंक कर सकते हैं ताकि आपको फिर से g ++ के साथ किसी भी अतिरिक्त ध्वज का उपयोग न करना पड़े। ऐसा करने के लिए, बस निम्नलिखित पर अमल करें:sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
Akronix


0

Pls। देखो अगर आपके पास / usr / शामिल "Eigen" नाम का एक फ़ोल्डर है।

मैं eigen और इंस्टॉलेशन रूटीन नहीं जानता। लेकिन बहुत बार देव शामिल हैं एक संस्करण के साथ नाम दिया गया है।

यदि आपके / usr / निर्देशिका में "Eigen3" फ़ोल्डर है, तो आपको अपना कोड बदलना चाहिए:

#include <Eigen3/Dense>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.