Як встановити eigen 3.3 в Ubuntu 14.04?


13

Я використовую 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

Вибачте. Що це означає? Як я можу виправити свою проблему. Я впевнено, що не встановив версію 3.3 успішно
Джон

Що змушує вас вважати це невдалим? Що pkg-config --modversion eigen3говорить? Яку версію ви отримуєте насправді, намагаючись створити речі?
steeldriver

Оскільки я запускаю вихідний код, який вимагає версії 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/у вашому комп’ютері)


Дякую. Однак я компілюю відкритий код з cmake. Він використовує лінію для перевірки Eigen 3 версії # Add Eigen dependencies FIND_PACKAGE(Eigen 3.2.90 REQUIRED). У 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 вручну, ймовірно, є надмірним для більшості випадків використання.


2
Здається, що для мене просто, але не вдалося :(
Yair Daon,

7
libeigen3-devвстановлює Eigen 3.2, він просить 3.3, тому ця відповідь неправильна, якщо вам потрібно 3.3.
Gines Hidalgo

на Ubuntu 19.04 пакет надає 3.3.7 ... тоді як при встановленні з src tree github.com/PX4/eigen ви отримуєте 3.3.90 станом на 20190712
Скотт

2

dpkgзнає лише про програмне забезпечення, встановлене за допомогою стандартних інструментів управління пакетами Ubuntu. Але це не те, як ви встановили власне. Ви встановили з вихідного коду, і як такий dpkgйого не знаєте. Вихід dpkg -p libeigen3-devне стосується встановленого вами власного власника, а іншої версії 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....".

Удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.