Comment installer eigen 3.3 dans Ubuntu 14.04?

12

J'utilise Ubuntu 14.04 et je souhaite installer eigen 3.3 dans Ubuntu. J'ai essayé de télécharger la dernière version d'Eigen 3 (3.3) et de l'installer comme suit

mkdir build
cd build
cmake ..
make
sudo make install 

La sortie aime

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

Cependant, lorsque je vérifie ma version propre actuelle avec dpkg -p libeigen3-dev, la sortie est

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

Cela montre que ma configuration n'est pas terminée. Comment puis-je installer la version propre dans mon Ubuntu? Merci à tous

C'est une erreur lorsque je compile avec CmakeList.txt au code source

-- ===============================================================
-- ============ 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
la source
1
À moins que vous ne preniez des mesures supplémentaires (telles que l'utilisation du checkinstallprogramme à la place de make install), le système dpkg ne saura rien des programmes installés à partir de la source de cette manière.
steeldriver
Désolé. Qu'est-ce que ça veut dire? Comment pourrais-je résoudre mon problème. Je suis sûr que je n'ai pas installé la version 3.3 avec succès
John
Qu'est-ce qui vous fait penser que cela n'a pas réussi? Que pkg-config --modversion eigen3dit-on? Quelle version obtenez-vous réellement lorsque vous essayez de créer des trucs?
steeldriver
Parce que j'exécute un code source qui nécessite la version de Eigen> = 3.2.90 et cela a montré que ma version actuelle est toujours 3.2.0
John

Réponses:

9

Eigen c ++ est une bibliothèque d'en-tête uniquement: vous n'avez pas besoin de l'installer, il vous suffit de la télécharger, de la décompresser et de lier votre code à celle-ci.

Par exemple, si votre code est dedans my_favorite_cpp_folder, vous faites:

cd my_favorite_cpp_folder

et, en supposant que votre compilateur est gccet que les en-têtes propres sont dedans /usr/local/include/eigen3/unsupported/et que le nom de votre fichier source est my_favorite_cpp_source_file.cpp, vous compilez et codez et le liez aux en-têtes propres en faisant:

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

(à partir de la sortie de votre code affichée ci-dessus, les en-têtes propres sont /usr/local/include/eigen3/dans votre ordinateur)

user2413
la source
Je vous remercie. Cependant, je compile un code open source à partir de cmake. Il utilise la ligne pour vérifier la version Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Je n'ai trouvé aucun chemin d'accès de lib de configuration dans le CmakeList.txt
John
dans tous les cas, votre problème n'est pas d'installer eigen, c'est d'installer cette bibliothèque open source. Vous devriez afficher les messages d'erreur que vous obtenez lors de l'installation de cette bibliothèque dans votre question, ceux-ci seront informatifs.
user2413
Oui. J'ai mis à jour l'erreur et le lien source
John
ne gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h recherchez les lignes #define EIGEN_WORLD_VERSIONà #define EIGEN_MINOR_VERSIONcopier et publier ceux -ci .
user2413
1
Merci. Ça fonctionnait maintenant. Mon logiciel installé n'est qu'un projet.
John
21

Pour ceux qui ont simplement besoin d'une version raisonnablement récente d' Eigen 3 sur Ubuntu et de distributions similaires basées sur Debian ( ... ce qui est le cas commun ), l'installation du libeigen3-devpackage existant suffit: par exemple,

sudo apt install libeigen3-dev

Le téléchargement et l'installation manuels d'Eigen 3 sont probablement exagérés pour la plupart des cas d'utilisation.

Cecil Curry
la source
1
Semble simple mais a échoué pour moi :(
Yair Daon
6
libeigen3-devinstalle Eigen 3.2, il demande 3.3, donc cette réponse est fausse si vous avez besoin de 3.3.
Gines Hidalgo
sur Ubuntu 19.04 le paquet vous donne 3.3.7 ... alors que lorsque vous installez à partir de l'arbre src github.com/PX4/eigen vous obtenez 3.3.90 à partir de 20190712
Scott Stensland
2

dpkgne connaît que les logiciels que vous avez installés par les outils de gestion de paquets standard d'Ubuntu. Mais ce n'est pas ainsi que vous avez installé eigen. Vous avez installé à partir du code source, et en tant que tel, vous dpkgne le savez pas. La sortie de dpkg -p libeigen3-devne concerne pas le fichier eigen que vous avez installé, mais une version différente de eigen, installée à l'aide des outils de gestion de package standard.

En fonction de votre sortie de sudo make install, la version d'eigen que vous avez installée à partir de la source est prête à l'emploi, ses fichiers sont disponibles dans /usr/local/include/eigen3/unsupported/Eigen/src.

janos
la source
1

Après avoir extrait le dossier compressé, vérifiez le fichier INSTALL. J'ai utilisé la deuxième option d'installation à l'aide de cmake. Après quoi le dossier "eigen3" avec les fichiers d'en-tête a été créé dans le /usr/local/include/dossier.

Dans votre projet, vous pouvez inclure des en-têtes propres comme celui-ci:

#include <eigen3/Eigen/Dense>

J'ai oublié de mentionner ceci. Étant donné que les fichiers d'en-tête sont dans le /usr/local/include/dossier, vous n'avez pas besoin de compiler vos fichiers de code source avec eux en utilisant " g++ -I....".

Bonne chance!

Onesphore Ndayishimiye
la source