如何在Ubuntu 14.04中安装eigen 3.3?


12

我正在使用Ubuntu 14.04,我想在Ubuntu中安装eigen 3.3。我尝试下载Eigen 3(3.3)的最新版本并按以下方式安装

mkdir build
cd build
cmake ..
make
sudo make install 

输出喜欢

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

但是,当我使用检查我当前的本征版本时dpkg -p libeigen3-dev,输出为

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

它显示我的设置未完成。如何在Ubuntu中安装本征版本?谢谢大家

当我在源代码中使用CmakeList.txt编译时,这是错误

-- ===============================================================
-- ============ 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
除非您采取其他步骤(例如,使用checkinstall程序代替make install),否则dpkg系统将不了解以这种方式从源代码安装的程序。
steeldriver '16

抱歉。这是什么意思?我该如何解决我的问题。我肯定没有成功安装3.3版本
John

是什么让您认为它不成功?什么pkg-config --modversion eigen3发言权?当您尝试构建东西时,实际上会获得什么版本?
steeldriver '16

因为我运行的源代码需要Eigen> = 3.2.90的版本,并且它显示我的当前版本仍为3.2.0
John

Answers:


9

Eigen c ++是仅标头的库:您无需安装它,只需下载它,解压缩它并针对它链接代码即可。

例如,如果您的代码在中my_favorite_cpp_folder,则可以执行以下操作:

cd my_favorite_cpp_folder

并且,假设您的编译器为gcc,特征根头位于 /usr/local/include/eigen3/unsupported/,源文件的名称为my_favorite_cpp_source_file.cpp,则您可以进行编译和编码,并将其链接到特征头,方法是:

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

(从上面发布的代码输出中,特征标头/usr/local/include/eigen3/位于您的计算机中)


谢谢。但是,我从cmake编译了一个开源代码。它使用该行检查Eigen 3版本# Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED)。我没有在CmakeList.txt中找到任何设置的lib路径
John

无论如何,您的问题不在于安装本征,而是在于安装该开源库。您应该在问题中输入安装该库时收到的错误消息,这些消息将提供信息。
user2413 '16

是。我更新了错误和源链接
约翰

gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h 寻找#define EIGEN_WORLD_VERSION#define EIGEN_MINOR_VERSION复制并发布的行。
user2413 '16

1
谢谢。现在工作了。我安装的软件只是一个项目。
约翰

21

对于那些只需要在Ubuntu和类似的基于Debian的发行版上使用Eigen 3的较新版本(...这是常见情况),安装现有libeigen3-dev软件包就可以了:例如,

sudo apt install libeigen3-dev

在大多数使用情况下,手动下载和安装Eigen 3可能会过头了。


1
似乎很简单,但对我却失败了:(
Yair Daon

6
libeigen3-dev安装Eigen 3.2,他要求输入3.3,因此如果您需要3.3,则此答案是错误的。
Gines Hidalgo,

在Ubuntu 19.04上,该软件包为您提供3.3.7 ...,而当您从src树github.com/PX4/eigen安装时,截至20190712您将获得3.3.90
Scott Stensland

2

dpkg仅了解Ubuntu的标准软件包管理工具已安装的软件。但这不是您安装本征的方式。您是从源代码安装的,因此dpkg是不知道的。的输出与dpkg -p libeigen3-dev您安装的特征值无关,而是与使用标准程序包管理工具安装的特征版本不同。

根据您的输出sudo make install,从源安装的本征版本可以使用了,其文件位于中/usr/local/include/eigen3/unsupported/Eigen/src


1

提取压缩文件夹后,检查INSTALL文件。我使用了安装的第二个选项cmake。之后,在/usr/local/include/文件夹中创建带有头文件的“ eigen3”文件夹。

在您的项目中,可以包含如下特征峰:

#include <eigen3/Eigen/Dense>

我忘了提这个。由于头文件位于/usr/local/include/文件夹中,因此您无需使用“ g++ -I....” 针对它们编译源代码文件。

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.