Come installare eigen 3.3 in Ubuntu 14.04?


12

Sto usando Ubuntu 14.04 e voglio installare eigen 3.3 in Ubuntu. Ho provato a scaricare la versione più recente di Eigen 3 (3.3) e installare come segue

mkdir build
cd build
cmake ..
make
sudo make install 

L'output piace

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

Tuttavia, quando controllo la mia attuale versione eigen dpkg -p libeigen3-dev, l'output è

Package: libeigen3-dev
Priority: extra
Section: libdevel
Installed-Size: 3729
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Source: eigen3
Version: 3.2.0-8
Provides: libeigen2-dev
Depends: pkg-config
Suggests: libeigen3-doc, libmrpt-dev
Size: 494158

Ha mostrato che la mia installazione non termina. Come posso installare la versione eigen nel mio Ubuntu? Grazie a tutti

Questo è un errore quando compilo con CmakeList.txt al codice sorgente

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

1
A meno che non si eseguano ulteriori passaggi (come l'utilizzo del checkinstallprogramma al posto di make install), il sistema dpkg non saprà nulla dei programmi installati dall'origine in questo modo.
Steeldriver,

Scusate. Cosa significa? Come posso risolvere il mio problema. Sicuramente non ho installato la versione 3.3 con successo
John,

Cosa ti fa pensare che non abbia avuto successo? Cosa pkg-config --modversion eigen3dice? Quale versione ottieni effettivamente quando provi a creare materiale?
Steeldriver,

Perché eseguo un codice sorgente che richiede la versione di Eigen> = 3.2.90 e ha dimostrato che la mia versione attuale è ancora 3.2.0
John,

Risposte:


9

Eigen c ++ è una libreria solo intestazione: non è necessario installarlo, basta scaricarlo, decomprimerlo e collegare il codice contro di esso.

Ad esempio, se il tuo codice è inserito my_favorite_cpp_folder, fai:

cd my_favorite_cpp_folder

e, supponendo che il compilatore sia gcce le intestazioni eigen siano presenti /usr/local/include/eigen3/unsupported/e il nome del file sorgente sia my_favorite_cpp_source_file.cpp, compilate e codificate e collegatelo alle intestazioni eigen facendo:

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

(dal tuo output di codice pubblicato sopra, le intestazioni di eigen sono /usr/local/include/eigen3/nel tuo computer)


Grazie. Tuttavia, compilo un codice open source da cmake. Usa la linea per verificare la versione di Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Non ho trovato alcun percorso lib di impostazione in CmakeList.txt
John,

in ogni caso il tuo problema non è con l'installazione di eigen, ma con l'installazione di quella libreria open source. Dovresti inserire i messaggi di errore che ricevi quando installi quella libreria nella tua domanda, quelli saranno informativi.
user2413

Sì. Ho aggiornato l'errore e il link di origine
John,

fare gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h aspetto per le linee #define EIGEN_WORLD_VERSIONper #define EIGEN_MINOR_VERSIONcopiare e inviare quelli.
user2413

1
Grazie. Funzionava adesso. Il mio software installato è solo un progetto.
Giovanni,

21

Per coloro che richiedono semplicemente una versione ragionevolmente recente di Eigen 3 su Ubuntu e distribuzioni simili basate su Debian ( ... che è il caso comune ), libeigen3-devè sufficiente installare il pacchetto esistente : ad es.

sudo apt install libeigen3-dev

Il download e l'installazione manuali di Eigen 3 è probabilmente eccessivo per la maggior parte dei casi d'uso.


1
Sembra semplice ma fallito per me :(
Yair Daon,

6
libeigen3-devinstalla Eigen 3.2, chiede 3.3, quindi questa risposta è sbagliata se hai bisogno di 3.3.
Gines Hidalgo,

su Ubuntu 19.04 il pacchetto fornisce 3.3.7 ... mentre quando si installa da src tree github.com/PX4/eigen si ottiene 3.3.90 a partire da 20190712
Scott Stensland

2

dpkgconosce solo il software installato dagli strumenti standard di gestione dei pacchetti di Ubuntu. Ma non è così che hai installato eigen. Hai installato dal codice sorgente e come tale dpkgnon lo sa. L'output di dpkg -p libeigen3-devnon riguarda eigen installato, ma riguarda una versione diversa di eigen, installata utilizzando gli strumenti standard di gestione dei pacchetti.

Sulla base del tuo output di sudo make install, la versione di eigen che hai installato dal sorgente è pronta per l'uso, i suoi file sono disponibili in /usr/local/include/eigen3/unsupported/Eigen/src.


1

Dopo aver estratto la cartella compressa, controlla il file INSTALL. Ho usato la seconda opzione di installazione utilizzando cmake. Dopo di che la cartella "eigen3" con i file di intestazione è stata creata nella /usr/local/include/cartella.

Nel tuo progetto puoi includere le intestazioni di Eigen in questo modo:

#include <eigen3/Eigen/Dense>

Ho dimenticato di menzionarlo. Poiché i file di intestazione si trovano nella /usr/local/include/cartella, non è necessario compilare i file del codice sorgente con " g++ -I...."

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.