¿Cómo instalar eigen 3.3 en Ubuntu 14.04?

12

Estoy usando Ubuntu 14.04 y quiero instalar eigen 3.3 en Ubuntu. Traté de descargar la versión más reciente de Eigen 3 (3.3) e instalarlo de la siguiente manera

mkdir build
cd build
cmake ..
make
sudo make install 

La salida le gusta

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

Sin embargo, cuando verifico mi versión actual con dpkg -p libeigen3-dev, la salida es

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

Se muestra que mi configuración no termina. ¿Cómo puedo instalar la versión eigen en mi Ubuntu? Gracias a todos

Esto es un error cuando compilo con CmakeList.txt en el código fuente

-- ===============================================================
-- ============ 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)
Juan
fuente
1
A menos que checkinstallrealice pasos adicionales (como usar el programa en lugar de make install), el sistema dpkg no sabrá nada sobre los programas instalados desde la fuente de esta manera.
steeldriver
Lo siento. Qué significa eso? ¿Cómo podría solucionar mi problema? Seguramente no instalé la versión 3.3 con éxito
John
¿Qué te hace pensar que no tuvo éxito? Que pkg-config --modversion eigen3dice ¿Qué versión obtienes cuando intentas construir cosas?
steeldriver
Debido a que ejecuto un código fuente que requiere la versión de Eigen> = 3.2.90 y demostró que mi versión actual sigue siendo 3.2.0
John

Respuestas:

9

Eigen c ++ es una biblioteca de solo encabezado: no tiene que instalarlo, solo descárguelo, descomprímalo y vincule su código.

Por ejemplo, si su código está en my_favorite_cpp_folder, usted hace:

cd my_favorite_cpp_folder

y, suponiendo que su compilador esté gccy que los encabezados propios estén dentro /usr/local/include/eigen3/unsupported/y que el nombre de su archivo fuente sea my_favorite_cpp_source_file.cpp, usted compila y codifica y los vincula a los encabezados propios haciendo:

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

(de la salida de su código publicado anteriormente, los encabezados propios están /usr/local/include/eigen3/en su computadora)

usuario2413
fuente
Gracias. Sin embargo, compilo un código fuente abierto de cmake. Utiliza la línea para verificar la versión de Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). No encontré ninguna ruta de configuración de lib en CmakeList.txt
John
en cualquier caso, su problema no es instalar eigen, es instalar esa biblioteca de código abierto. Debe colocar los mensajes de error que recibe al instalar esa biblioteca en su pregunta, serán informativos.
user2413
Si. Actualicé el error y el enlace de origen
John
hacer gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h mirada de las líneas #define EIGEN_WORLD_VERSIONde #define EIGEN_MINOR_VERSIONcopiar y publicar esos.
user2413
1
Gracias. Funcionó ahora. Mi software instalado es solo un proyecto.
John
21

Para aquellos que simplemente requieren una versión razonablemente reciente de Eigen 3 en Ubuntu y distribuciones similares basadas en Debian ( ... que es el caso común ), la instalación del libeigen3-devpaquete existente es suficiente: por ejemplo,

sudo apt install libeigen3-dev

La descarga e instalación manual de Eigen 3 probablemente sea exagerada para la mayoría de los casos de uso.

Cecil Curry
fuente
1
Parece simple pero falló para mí :(
Yair Daon
66
libeigen3-devinstala Eigen 3.2, está pidiendo 3.3, por lo que esta respuesta es incorrecta si necesita 3.3.
Gines Hidalgo
en Ubuntu 19.04 el paquete le da 3.3.7 ... mientras que cuando instala desde src tree github.com/PX4/eigen obtiene 3.3.90 a partir de 20190712
Scott Stensland
2

dpkgsolo conoce el software que instaló con las herramientas de administración de paquetes estándar de Ubuntu. Pero no es así como instaló eigen. Lo ha instalado desde el código fuente y, como tal, dpkgno lo sabe. La salida de dpkg -p libeigen3-devno se trata del eigen que instaló, sino de una versión diferente de eigen, instalada utilizando las herramientas de administración de paquetes estándar.

Según su salida de sudo make install, la versión de eigen que instaló desde la fuente está lista para usar, sus archivos están disponibles en /usr/local/include/eigen3/unsupported/Eigen/src.

janos
fuente
1

Después de extraer la carpeta comprimida, verifique el archivo INSTALL. Usé la segunda opción de instalación usando cmake. Después de lo cual se creó la carpeta "eigen3" con los archivos de encabezado en la /usr/local/include/carpeta.

En su proyecto puede incluir encabezados propios como este:

#include <eigen3/Eigen/Dense>

Olvidé mencionar esto. Dado que los archivos de encabezado están en la /usr/local/include/carpeta, no necesita compilar sus archivos de código fuente contra ellos usando " g++ -I....".

¡Buena suerte!

Onesphore Ndayishimiye
fuente