Como instalar o eigen 3.3 no Ubuntu 14.04?

12

Estou usando o Ubuntu 14.04 e quero instalar o eigen 3.3 no Ubuntu. Tentei baixar a versão mais recente do Eigen 3 (3.3) e instalar da seguinte maneira

mkdir build
cd build
cmake ..
make
sudo make install 

A saída gosta

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

No entanto, quando verifico a minha versão atual do eigen dpkg -p libeigen3-dev, a saída é

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

Mostrou que minha configuração não termina. Como posso instalar a versão eigen no meu Ubuntu? Agradecer a todos

Este é um erro quando eu compilar com CmakeList.txt no código fonte

-- ===============================================================
-- ============ 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
fonte
11
A menos que você execute etapas adicionais (como usar o checkinstallprograma no lugar de make install), o sistema dpkg não saberá nada sobre os programas instalados a partir da fonte dessa maneira.
Steeldiver 13/12/16
Desculpa. O que isso significa? Como eu poderia resolver meu problema. Eu certamente que não instalei a versão 3.3 com sucesso #
John
O que faz você pensar que não teve sucesso? O que pkg-config --modversion eigen3diz? Qual versão você realmente obtém quando tenta criar coisas?
Steeldiver 13/12/16
Porque eu executar um código fonte que exigem a versão do Eigen> = 3.2.90 e mostrado que a minha versão atual ainda é 3.2.0
John

Respostas:

10

Eigen c ++ é uma biblioteca apenas de cabeçalho: você não precisa instalá-lo, basta fazer o download, descompactar e vincular seu código a ele.

Por exemplo, se seu código estiver dentro my_favorite_cpp_folder, você faz:

cd my_favorite_cpp_folder

e, supondo que seu compilador esteja gcce os cabeçalhos de eigen estejam /usr/local/include/eigen3/unsupported/e o nome do arquivo de origem esteja my_favorite_cpp_source_file.cpp, você compila e codifica e vincula-o aos cabeçalhos de eigen fazendo:

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

(a partir da saída do código postada acima, os cabeçalhos eigen estão /usr/local/include/eigen3/no seu computador)

user2413
fonte
Obrigado. No entanto, eu compilo um código-fonte aberto do cmake. Ele usa a linha para verificar a versão do Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Não encontrei nenhum caminho de configuração da biblioteca no CmakeList.txt
John
em qualquer caso, seu problema não está na instalação do eigen, mas na instalação dessa biblioteca de código aberto. Você deve colocar as mensagens de erro que receber ao instalar a biblioteca em sua pergunta, elas serão informativas.
user2413
Sim. Eu atualizei o link erro e fonte
John
fazer gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h olhar para as linhas #define EIGEN_WORLD_VERSIONpara #define EIGEN_MINOR_VERSIONcopiar e publicar aqueles.
user2413
11
Obrigado. Funcionou agora. Meu software instalado é apenas um projeto.
John
20

Para aqueles que simplesmente exigem uma versão razoavelmente recente do Eigen 3 no Ubuntu e distros similares baseados no Debian ( ... que é o caso comum ), a instalação do libeigen3-devpacote existente é suficiente: por exemplo,

sudo apt install libeigen3-dev

Baixar e instalar manualmente o Eigen 3 provavelmente é um exagero para a maioria dos casos de uso.

Cecil Curry
fonte
11
Parece simples, mas falhou para mim :(
Yair Daon
6
libeigen3-devinstala o Eigen 3.2, ele está pedindo 3.3, então esta resposta está errada se você precisar do 3.3.
Gines Hidalgo
no Ubuntu 19,04 o pacote dá-lhe 3.3.7 ... enquanto que quando você instalar a partir de árvore src github.com/PX4/eigen você começa 3.3.90 a partir de 20190712
Scott Stensland
2

dpkgsó conhece o software que você instalou pelas ferramentas padrão de gerenciamento de pacotes do Ubuntu. Mas não foi assim que você instalou o eigen. Você instalou a partir do código fonte e, como tal dpkg, não o conhece. A saída de dpkg -p libeigen3-devnão é sobre o eigen que você instalou, mas sobre uma versão diferente do eigen, instalada usando as ferramentas de gerenciamento de pacotes padrão.

Com base na sua saída de sudo make install, a versão do eigen que você instalou a partir da fonte está pronta para uso, seus arquivos estão disponíveis no /usr/local/include/eigen3/unsupported/Eigen/src.

janos
fonte
1

Após extrair a pasta compactada, verifique o arquivo INSTALL. Eu usei a segunda opção de instalar usando cmake. Após o qual a pasta "eigen3" com os arquivos de cabeçalho foi criada na /usr/local/include/pasta.

No seu projeto, você pode incluir cabeçalhos próprios como este:

#include <eigen3/Eigen/Dense>

Eu esqueci de mencionar isso. Como os arquivos de cabeçalho estão na /usr/local/include/pasta, você não precisa compilar seus arquivos de código-fonte usando " g++ -I....".

Boa sorte!

Onesphore Ndayishimiye
fonte