Как установить eigen 3.3 в Ubuntu 14.04?

12

Я использую Ubuntu 14.04 и хочу установить eigen 3.3 в Ubuntu. Я попытался загрузить новейшую версию 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 13.12.16
Сожалею. Что это значит? Как я мог исправить мою проблему. Я уверен, что я не установил версию 3.3 успешно
Джон
Что заставляет вас думать, что это было неудачно? Что pkg-config --modversion eigen3говорит? Какую версию вы на самом деле получаете, когда пытаетесь что-то собрать?
SteelDriver 13.12.16
Потому что я запускаю исходный код, который требует версию Eigen> = 3.2.90, и он показал, что моя текущая версия все еще 3.2.0
Джон

Ответы:

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/на вашем компьютере)

user2413
источник
Спасибо. Тем не менее, я компилирую открытый исходный код из cmake. Он использует строку, чтобы проверить версию Eigen 3 # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). Я не нашел никакого пути установки lib в CmakeList.txt
Джон
в любом случае ваша проблема не в установке eigen, а в установке библиотеки с открытым исходным кодом. Вы должны поместить сообщения об ошибках, которые вы получаете при установке этой библиотеки в вашем вопросе, они будут информативными.
user2413
Да. Я обновил ошибку и ссылку на источник
Джон
делать gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h вид для строки , #define EIGEN_WORLD_VERSIONчтобы #define EIGEN_MINOR_VERSIONскопировать и разместить их.
user2413
1
Спасибо. Это сработало сейчас. Мое установленное программное обеспечение просто проект.
Джон
21

Для тех, кому просто нужна достаточно свежая версия Eigen 3 в Ubuntu и аналогичные дистрибутивы на основе Debian ( ... что является распространенным случаем ), достаточно установить существующий libeigen3-devпакет: например,

sudo apt install libeigen3-dev

Загрузка и установка Eigen 3 вручную, вероятно, является излишним для большинства случаев использования.

Сесил Карри
источник
1
Кажется простым, но неудачным для меня :(
Яир
6
libeigen3-devустанавливает Eigen 3.2, он запрашивает 3.3, поэтому этот ответ неверен, если вам нужно 3.3.
Джинес Идальго
в Ubuntu 19.04 пакет дает вам 3.3.7 ... тогда как при установке из src tree github.com/PX4/eigen вы получаете 3.3.90 по состоянию на 20190712
Скотт Стенсланд
2

dpkgзнает только о программном обеспечении, которое вы установили с помощью стандартных инструментов управления пакетами Ubuntu. Но это не так, как вы установили Eigen. Вы установили из исходного кода, и поэтому dpkgне знаете его. Вывод dpkg -p libeigen3-devне о eigen, который вы установили, а о другой версии eigen, установленной с использованием стандартных инструментов управления пакетами.

Исходя из вашего вывода sudo make install, версия eigen, которую вы установили из исходного кода, готова к использованию, ее файлы доступны в /usr/local/include/eigen3/unsupported/Eigen/src.

Янош
источник
1

После извлечения сжатой папки проверьте файл INSTALL. Я использовал второй вариант установки с помощью cmake. После чего в /usr/local/include/папке была создана папка «eigen3» с заголовочными файлами .

В ваш проект вы можете включить собственные заголовки, например:

#include <eigen3/Eigen/Dense>

Я забыл упомянуть об этом. Поскольку файлы заголовков находятся в /usr/local/include/папке, вам не нужно компилировать файлы исходного кода для них, используя « g++ -I....».

Удачи!

Онсафор Ндайшиемие
источник