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)
checkinstall
realice pasos adicionales (como usar el programa en lugar demake install
), el sistema dpkg no sabrá nada sobre los programas instalados desde la fuente de esta manera.pkg-config --modversion eigen3
dice ¿Qué versión obtienes cuando intentas construir cosas?Respuestas:
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:y, suponiendo que su compilador esté
gcc
y que los encabezados propios estén dentro/usr/local/include/eigen3/unsupported/
y que el nombre de su archivo fuente seamy_favorite_cpp_source_file.cpp
, usted compila y codifica y los vincula a los encabezados propios haciendo:(de la salida de su código publicado anteriormente, los encabezados propios están
/usr/local/include/eigen3/
en su computadora)fuente
# Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)
. No encontré ninguna ruta de configuración de lib en CmakeList.txtgedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
mirada de las líneas#define EIGEN_WORLD_VERSION
de#define EIGEN_MINOR_VERSION
copiar y publicar esos.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-dev
paquete existente es suficiente: por ejemplo,La descarga e instalación manual de Eigen 3 probablemente sea exagerada para la mayoría de los casos de uso.
fuente
libeigen3-dev
instala Eigen 3.2, está pidiendo 3.3, por lo que esta respuesta es incorrecta si necesita 3.3.dpkg
solo 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,dpkg
no lo sabe. La salida dedpkg -p libeigen3-dev
no 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
.fuente
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:
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!
fuente