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)
checkinstall
programa no lugar demake install
), o sistema dpkg não saberá nada sobre os programas instalados a partir da fonte dessa maneira.pkg-config --modversion eigen3
diz? Qual versão você realmente obtém quando tenta criar coisas?Respostas:
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:e, supondo que seu compilador esteja
gcc
e os cabeçalhos de eigen estejam/usr/local/include/eigen3/unsupported/
e o nome do arquivo de origem estejamy_favorite_cpp_source_file.cpp
, você compila e codifica e vincula-o aos cabeçalhos de eigen fazendo:(a partir da saída do código postada acima, os cabeçalhos eigen estão
/usr/local/include/eigen3/
no seu computador)fonte
# Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)
. Não encontrei nenhum caminho de configuração da biblioteca no CmakeList.txtgedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
olhar para as linhas#define EIGEN_WORLD_VERSION
para#define EIGEN_MINOR_VERSION
copiar e publicar aqueles.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-dev
pacote existente é suficiente: por exemplo,Baixar e instalar manualmente o Eigen 3 provavelmente é um exagero para a maioria dos casos de uso.
fonte
libeigen3-dev
instala o Eigen 3.2, ele está pedindo 3.3, então esta resposta está errada se você precisar do 3.3.dpkg
só 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 taldpkg
, não o conhece. A saída dedpkg -p libeigen3-dev
nã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
.fonte
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:
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!
fonte