Wie installiere ich Eigen 3.3 in Ubuntu 14.04?

12

Ich benutze Ubuntu 14.04 und möchte eigen 3.3 in Ubuntu installieren. Ich habe versucht, die neueste Version von Eigen 3 (3.3) herunterzuladen und wie folgt zu installieren

mkdir build
cd build
cmake ..
make
sudo make install 

Die Ausgabe gefällt

-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h
-- Installing: /usr/local/include/eigen3/unsupported/Eigen/src/Splines/Spline.h

Wenn ich jedoch meine aktuelle Eigenversion mit überprüfe dpkg -p libeigen3-dev, ist die Ausgabe

Package: libeigen3-dev
Priority: extra
Section: libdevel
Installed-Size: 3729
Maintainer: Ubuntu Developers <[email protected]>
Architecture: all
Source: eigen3
Version: 3.2.0-8
Provides: libeigen2-dev
Depends: pkg-config
Suggests: libeigen3-doc, libmrpt-dev
Size: 494158

Es wurde angezeigt, dass mein Setup nicht abgeschlossen ist. Wie kann ich die Eigenversion in meinem Ubuntu installieren? Allen danken

Dies ist ein Fehler, wenn ich mit CmakeList.txt im Quellcode kompiliere

-- ===============================================================
-- ============ Configuring CompileSettings  =====================
-- ===============================================================
-- ============= Look for required libraries =====================
-- Looking for Eigen Library with minimum version 3.2.90
-- Looking for Eigen via User Provided (or Cached) location
-- Eigen version 3.2.0 found in /usr/include/eigen3
CMake Warning at cmake/FindEigen.cmake:62 (message):
  Eigen version is less than requred version 3.2.90
Call Stack (most recent call first):
  cmake/FindEigen.cmake:73 (Eigen_Check_Version)
  CMakeLists.txt:23 (FIND_PACKAGE)


CMake Error at /usr/local/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find Eigen (missing: EIGEN_VERSION_OK) (Required is at least
  version "3.2.90")
Call Stack (most recent call first):
  /usr/local/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindEigen.cmake:74 (find_package_handle_standard_args)
  CMakeLists.txt:23 (FIND_PACKAGE)
John
quelle
1
Wenn Sie keine zusätzlichen Schritte ausführen (z. B. das checkinstallProgramm anstelle von verwenden make install), weiß das dpkg-System nichts über Programme, die auf diese Weise vom Quellcode installiert wurden.
Steeldriver
Es tut uns leid. Was bedeutet es? Wie könnte ich mein Problem beheben? Ich bin mir sicher, dass ich die Version 3.3 nicht erfolgreich installiert habe
John
Was lässt Sie denken, dass es nicht erfolgreich war? Was pkg-config --modversion eigen3sagt das aus? Welche Version bekommst du eigentlich, wenn du versuchst Sachen zu bauen?
Steeldriver
Weil ich einen Quellcode ausführe, der die Version von Eigen> = 3.2.90 erfordert, und es zeigte, dass meine aktuelle Version immer noch 3.2.0 ist
John

Antworten:

10

Eigen c ++ ist eine reine Header-Bibliothek: Sie müssen sie nicht installieren, sondern nur herunterladen, entpacken und Ihren Code damit verknüpfen.

Wenn sich Ihr Code beispielsweise in befindet my_favorite_cpp_folder, tun Sie Folgendes:

cd my_favorite_cpp_folder

Angenommen, Ihr Compiler ist gccund die Eigen-Header sind in /usr/local/include/eigen3/unsupported/und der Name Ihrer Quelldatei ist my_favorite_cpp_source_file.cpp, kompilieren und codieren Sie und verknüpfen Sie sie mit den Eigen-Headern, indem Sie Folgendes tun:

g++ -I /usr/local/include/eigen3/ my_favorite_cpp_source_file.cpp -o my_favorite_cpp_source_file

(Aus Ihrer oben angegebenen Code-Ausgabe befinden sich die Eigen-Header /usr/local/include/eigen3/in Ihrem Computer.)

user2413
quelle
Danke. Ich kompiliere jedoch einen Open Source Code aus cmake. Es verwendet die Zeile, um die Eigen 3-Version zu überprüfen # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Ich habe keinen einstellenden lib-Pfad in der CmakeList.txt gefunden
John
In jedem Fall liegt Ihr Problem nicht in der Installation von Eigen, sondern in der Installation dieser Open Source-Bibliothek. Sie sollten die Fehlermeldungen, die Sie bei der Installation dieser Bibliothek erhalten, in Ihre Frage einfügen. Diese sind informativ.
user2413
Ja. Ich habe den Fehler- und
John
Sie gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h sucht die Linien #define EIGEN_WORLD_VERSIONzu #define EIGEN_MINOR_VERSIONkopieren und veröffentlichen diese.
user2413
1
Vielen Dank. Es hat jetzt funktioniert. Meine installierte Software ist nur ein Projekt.
John
20

Für diejenigen, die lediglich eine relativ aktuelle Version von Eigen 3 unter Ubuntu und ähnlichen Debian-basierten Distributionen benötigen ( ... was häufig der Fall ist ), reicht die Installation des vorhandenen libeigen3-devPakets aus: z.

sudo apt install libeigen3-dev

Das manuelle Herunterladen und Installieren von Eigen 3 ist für die meisten Anwendungsfälle wahrscheinlich übertrieben.

Cecil Curry
quelle
1
Scheint einfach, aber für mich gescheitert :(
Yair Daon
6
libeigen3-devinstalliert Eigen 3.2, er fragt nach 3.3, daher ist diese Antwort falsch, wenn Sie 3.3 benötigen.
Gines Hidalgo
unter Ubuntu 19.04 gibt Ihnen das Paket 3.3.7 ... während Sie bei der Installation von src tree github.com/PX4/eigen 3.3.90 ab 20190712
Scott Stensland
2

dpkgkennt nur Software, die Sie mit den Standard-Paketverwaltungstools von Ubuntu installiert haben. Aber so haben Sie nicht eigen installiert. Sie haben aus dem Quellcode installiert und dpkgwissen es daher nicht. Bei der Ausgabe von dpkg -p libeigen3-devhandelt es sich nicht um das von Ihnen installierte Eigen, sondern um eine andere Version von Eigen, die mit den Standard-Paketverwaltungstools installiert wurde.

Basierend auf Ihrer Ausgabe von sudo make installist die Version von eigen, die Sie von der Quelle installiert haben, einsatzbereit. Die Dateien sind in verfügbar /usr/local/include/eigen3/unsupported/Eigen/src.

Janos
quelle
1

Überprüfen Sie nach dem Extrahieren des komprimierten Ordners die INSTALL-Datei. Ich habe die zweite Option der Installation mit verwendet cmake. Danach wurde der Ordner "eigen3" mit den Header-Dateien im /usr/local/include/Ordner erstellt.

In Ihr Projekt können Sie Eigenheader wie folgt einfügen:

#include <eigen3/Eigen/Dense>

Ich habe vergessen, das zu erwähnen. Da sich die Header-Dateien im /usr/local/include/Ordner befinden, müssen Sie Ihre Quellcodedateien nicht mit " g++ -I....."

Viel Glück!

Onesphore Ndayishimiye
quelle